aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-04-08 18:48:57 +0100
committerMichael Williamson <mike@zwobble.org>2026-04-08 18:51:44 +0100
commit109eb835082418d55b099301e151a7d9331135e0 (patch)
tree23591f105da29423c9cadd998fdf2a780eda69ed /src/test/java
parentffcf99fabf00f21ee48f82c913e2ad06b3b0c395 (diff)
Add extractvalue instruction to LLVM IR
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerInstructionTests.java17
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java9
2 files changed, 26 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 06d773d1..6c0123e0 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
@@ -106,6 +106,23 @@ public class LlvmIrSerializerInstructionTests {
}
@Test
+ public void extractValueIsSerialized() throws IOException {
+ var instruction = LlvmIr.extractValue(
+ LlvmIr.variableLocal("x"),
+ LlvmTypes.array(
+ 10,
+ LlvmTypes.structure(List.of(LlvmTypes.INT_64, LlvmTypes.INT_32))
+ ),
+ LlvmIr.variableLocal("y"),
+ List.of(3, 1)
+ );
+
+ var result = serializeToString(instruction, LlvmIrSerializer::serializeInstruction);
+
+ assertThat(result, equalTo("%x = extractvalue [10 x {i64, i32}] %y, 3, 1"));
+ }
+
+ @Test
public void getElementPtrIsSerialized() throws IOException {
var instruction = LlvmIr.getElementPtr(
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 a435877b..7e771717 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
@@ -74,6 +74,15 @@ public class LlvmIr {
return new LlvmCall(destination, returnType, functionPointer, args);
}
+ public static LlvmExtractValue extractValue(
+ LlvmVariable destination,
+ LlvmType aggregateType,
+ LlvmOperand aggregate,
+ List<Integer> indexes
+ ) {
+ return new LlvmExtractValue(destination, aggregateType, aggregate, indexes);
+ }
+
public static LlvmGetElementPtr getElementPtr(
LlvmVariable destination,
LlvmTypePointer pointerType,