aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-07-30 16:35:53 +0100
committerMichael Williamson <mike@zwobble.org>2023-07-30 16:35:53 +0100
commitcc21a3479f84cf7c829303132a68fb802676814f (patch)
tree8ecb3a1de848124910ad5839f05ade9c4b13b939 /src/test/java
parent3b71fb59ab9613d73733d6c82cac8ddd74bb5101 (diff)
Add LLVM alloca instruction
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerInstructionTests.java12
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java7
2 files changed, 19 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerInstructionTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerInstructionTests.java
index 83bf54bb..17a17343 100644
--- a/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerInstructionTests.java
+++ b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerInstructionTests.java
@@ -28,6 +28,18 @@ public class LlvmIrSerializerInstructionTests {
}
@Test
+ public void allocaIsSerialized() throws IOException {
+ var instruction = LlvmIr.alloca(
+ LlvmIr.variableLocal("x"),
+ LlvmTypes.INT_64
+ );
+
+ var result = serializeToString(instruction, LlvmIrSerializer::serializeInstruction);
+
+ assertThat(result, equalTo("%x = alloca i64"));
+ }
+
+ @Test
public void brIsSerializedWithOperandAndLabels() throws IOException {
var instruction = LlvmIr.br(
LlvmIr.variableLocal("x"),
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 49a653c5..3a317c3d 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
@@ -23,6 +23,13 @@ public class LlvmIr {
return new LlvmAdd(target, type, left, right);
}
+ public static LlvmAlloca alloca(
+ LlvmVariable target,
+ LlvmType type
+ ) {
+ return new LlvmAlloca(target, type);
+ }
+
public static LlvmBasicBlock basicBlock(
List<LlvmInstruction> instructions,
LlvmTerminatorInstruction terminator