diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-07-30 16:35:53 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-07-30 16:35:53 +0100 |
| commit | cc21a3479f84cf7c829303132a68fb802676814f (patch) | |
| tree | 8ecb3a1de848124910ad5839f05ade9c4b13b939 /src/test/java | |
| parent | 3b71fb59ab9613d73733d6c82cac8ddd74bb5101 (diff) | |
Add LLVM alloca instruction
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerInstructionTests.java | 12 | ||||
| -rw-r--r-- | src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java | 7 |
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 |
