aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-01-22 19:26:59 +0000
committerMichael Williamson <mike@zwobble.org>2024-01-22 19:26:59 +0000
commit70906ba9e9213391b524260acd653852e9b8f428 (patch)
tree10523a1202a2b55b59f80dd96a06cfa71a980d3a /src/test/java
parentc05cccb9f60bc4d4dab4f50bf686b6a94bfc6012 (diff)
Add LLVM getelementptr operand
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerOperandsTests.java21
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java8
2 files changed, 29 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerOperandsTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerOperandsTests.java
index 01de20fc..0139599e 100644
--- a/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerOperandsTests.java
+++ b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerOperandsTests.java
@@ -31,6 +31,27 @@ public class LlvmIrSerializerOperandsTests {
}
@Test
+ public void getElementPtrIsSerialized() throws IOException {
+ var operand = LlvmIr.operandGetElementPtr(
+ LlvmTypes.pointer(
+ LlvmTypes.array(
+ 0,
+ LlvmTypes.structure(List.of(LlvmTypes.INT_64, LlvmTypes.INT_32))
+ )
+ ),
+ LlvmIr.variableLocal("y"),
+ List.of(
+ LlvmIr.typedOperand(LlvmTypes.INT_64, LlvmIr.operandInt(3)),
+ LlvmIr.typedOperand(LlvmTypes.INT_32, LlvmIr.operandInt(1))
+ )
+ );
+
+ var result = serializeToString(operand, LlvmIrSerializer::serializeOperand);
+
+ assertThat(result, equalTo("getelementptr ([0 x {i64, i32}], ptr %y, i64 3, i32 1)"));
+ }
+
+ @Test
public void localVariableIsSerializedWithPercent() throws IOException {
var operand = 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 465597d9..a435877b 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
@@ -123,6 +123,14 @@ public class LlvmIr {
return new LlvmOperandArray(type, elements);
}
+ public static LlvmOperand operandGetElementPtr(
+ LlvmTypePointer pointerType,
+ LlvmOperand pointer,
+ List<LlvmTypedOperand> indexes
+ ) {
+ return new LlvmOperandGetElementPtr(pointerType, pointer, indexes);
+ }
+
public static LlvmOperand operandInt(long value) {
return new LlvmOperandInt(value);
}