diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-12-28 00:18:21 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-12-28 00:18:21 +0000 |
| commit | c0cbe0057519db843a1a4ce2beb97e0ff54ece17 (patch) | |
| tree | 3546a2cea39141325e490790b5e4c1854aecbe06 /src/test/java | |
| parent | 74f5dfda370d1ca9b45556328e2cab6b6ab4070a (diff) | |
Set target triple in LLVM IR
Diffstat (limited to 'src/test/java')
4 files changed, 35 insertions, 23 deletions
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/PatioToLlvmTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/PatioToLlvmTests.java index aa9cd007..2873a855 100644 --- a/src/test/java/org/shedlang/compiler/backends/llvm/PatioToLlvmTests.java +++ b/src/test/java/org/shedlang/compiler/backends/llvm/PatioToLlvmTests.java @@ -27,7 +27,7 @@ public abstract class PatioToLlvmTests extends PatioExampleTests { protected ExecutionResult run(PatioCompilationUnit patio) throws IOException, InterruptedException { var llvmModuleResult = PatioToLlvm.generateCompilationUnit( patio, - PatioToLlvmGlobalContext.EMPTY + PatioToLlvmGlobalContext.empty(this.llvmTarget()) ); var llvmModule = llvmModuleResult.value(); diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmFunctionContextTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmFunctionContextTests.java index 0ed0be80..7792519c 100644 --- a/src/test/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmFunctionContextTests.java +++ b/src/test/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmFunctionContextTests.java @@ -1,6 +1,7 @@ package org.shedlang.compiler.backends.llvm.codegen; import org.junit.jupiter.api.Test; +import org.shedlang.compiler.backends.llvm.LlvmTarget; import org.shedlang.compiler.backends.llvm.ir.ast.LlvmIr; import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmTypes; @@ -14,7 +15,7 @@ import static org.zwobble.precisely.Matchers.isSequence; public class PatioToLlvmFunctionContextTests { @Test public void whenThereAreNoInstructionsOutsideOfBasicBlockThenToBasicBlocksReturnsBasicBlocks() { - var context = PatioToLlvmFunctionContext.of(PatioToLlvmModuleContext.EMPTY); + var context = PatioToLlvmFunctionContext.of(PatioToLlvmModuleContext.empty(LlvmTarget.AMD64)); var addInstruction = LlvmIr.add( LlvmIr.variableLocal("a"), LlvmTypes.INT_64, @@ -34,7 +35,7 @@ public class PatioToLlvmFunctionContextTests { @Test public void whenThereAreInstructionsOutsideOfBasicBlockThenToBasicBlocksThrowsException() { - var context = PatioToLlvmFunctionContext.of(PatioToLlvmModuleContext.EMPTY); + var context = PatioToLlvmFunctionContext.of(PatioToLlvmModuleContext.empty(LlvmTarget.AMD64)); var addInstruction = LlvmIr.add( LlvmIr.variableLocal("a"), LlvmTypes.INT_64, 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 index 0c55d6d2..fc999e54 100644 --- a/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerModuleTests.java +++ b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerModuleTests.java @@ -16,27 +16,35 @@ import static org.zwobble.precisely.Matchers.equalTo; public class LlvmIrSerializerModuleTests { @Test public void canSerializeModules() throws IOException { - var module = LlvmIr.module(P.vector( - new LlvmGlobalDefinition( - "x", - LlvmTypes.INT_64, - Optional.of(LlvmIr.operandInt(42)), - false, - false, - false - ), - new LlvmGlobalDefinition( - "y", - LlvmTypes.INT_64, - Optional.of(LlvmIr.operandInt(42)), - false, - false, - false + var module = LlvmIr.module( + "x86_64-unknown-linux-gnu", + P.vector( + new LlvmGlobalDefinition( + "x", + LlvmTypes.INT_64, + Optional.of(LlvmIr.operandInt(42)), + false, + false, + false + ), + new LlvmGlobalDefinition( + "y", + LlvmTypes.INT_64, + Optional.of(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")); + assertThat(result, equalTo(""" + target triple = "x86_64-unknown-linux-gnu" + @x = global i64 42 + @y = global i64 42 + """ + )); } } 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 2ed63e9c..74d3df75 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 @@ -109,8 +109,11 @@ public class LlvmIr { return new LlvmLoad(target, type, pointer); } - public static LlvmModule module(PVector<LlvmTopLevelEntity> topLevelEntities) { - return new LlvmModule(topLevelEntities); + public static LlvmModule module( + String targetTriple, + PVector<LlvmTopLevelEntity> topLevelEntities + ) { + return new LlvmModule(targetTriple, topLevelEntities); } public static LlvmOperand operandArray( |
