aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-12-28 00:18:21 +0000
committerMichael Williamson <mike@zwobble.org>2023-12-28 00:18:21 +0000
commitc0cbe0057519db843a1a4ce2beb97e0ff54ece17 (patch)
tree3546a2cea39141325e490790b5e4c1854aecbe06 /src/test/java
parent74f5dfda370d1ca9b45556328e2cab6b6ab4070a (diff)
Set target triple in LLVM IR
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/PatioToLlvmTests.java2
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmFunctionContextTests.java5
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerModuleTests.java44
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java7
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(