From c70a0a1ecbd562f8e13c6c96b28bcd15d3cd2b62 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 17 Jun 2023 10:41:39 +0100 Subject: Serialize LLVM modules --- .../llvm/ir/LlvmIrSerializerModuleTests.java | 40 ++++++++++++++++++++++ .../compiler/backends/llvm/ir/ast/LlvmIr.java | 4 +++ 2 files changed, 44 insertions(+) create mode 100644 src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerModuleTests.java (limited to 'src/test/java') diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerModuleTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerModuleTests.java new file mode 100644 index 00000000..1f32ddf3 --- /dev/null +++ b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerModuleTests.java @@ -0,0 +1,40 @@ +package org.shedlang.compiler.backends.llvm.ir; + +import org.junit.jupiter.api.Test; +import org.shedlang.compiler.backends.llvm.ir.ast.LlvmGlobalDefinition; +import org.shedlang.compiler.backends.llvm.ir.ast.LlvmIr; +import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmTypes; + +import java.util.List; + +import static org.shedlang.compiler.backends.llvm.ir.LlvmIrSerializerTesting.serializeToString; +import static org.zwobble.precisely.AssertThat.assertThat; +import static org.zwobble.precisely.Matchers.equalTo; + +public class LlvmIrSerializerModuleTests { + @Test + public void canSerializeModules() { + var module = LlvmIr.module(List.of( + new LlvmGlobalDefinition( + "x", + LlvmTypes.INT_64, + LlvmIr.operandInt(42), + false, + false, + false + ), + new LlvmGlobalDefinition( + "y", + LlvmTypes.INT_64, + LlvmIr.operandInt(42), + false, + false, + false + ) + )); + + var result = serializeToString(module, LlvmIrSerializer::serializeModule); + + assertThat(result, equalTo("@x = global i64 42\n@y = global i64 42\n")); + } +} diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java b/src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java index eb28440c..069b938e 100644 --- a/src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java +++ b/src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java @@ -72,6 +72,10 @@ public class LlvmIr { return new LlvmLoad(target, type, pointer); } + public static LlvmModule module(List topLevelEntities) { + return new LlvmModule(topLevelEntities); + } + public static LlvmOperand operandArray( LlvmType type, List elements -- cgit v1.2.3