From abf18334f1f598230e69109f43a4a601b4f571a3 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 17 Jun 2023 22:03:32 +0100 Subject: Serialize LLVM ptr types as opaque ptr --- .../llvm/LlvmCompilerDefineFunctionTests.java | 24 +++++++++++----------- .../llvm/ir/LlvmIrSerializerOperandsTests.java | 2 +- .../llvm/ir/LlvmIrSerializerTypesTests.java | 4 ++-- 3 files changed, 15 insertions(+), 15 deletions(-) (limited to 'src/test/java') diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCompilerDefineFunctionTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCompilerDefineFunctionTests.java index e3f41a6c..1f4e154f 100644 --- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCompilerDefineFunctionTests.java +++ b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCompilerDefineFunctionTests.java @@ -43,7 +43,7 @@ public class LlvmCompilerDefineFunctionTests { () -> topLevelEntities.append("\n") ); assertThat(topLevelEntities.toString(), equalTo(""" - define i64 @shed__fun__f__0([0 x i64] * %shed__env__0) { + define i64 @shed__fun__f__0(ptr %shed__env__0) { ret i64 0 } """)); @@ -55,11 +55,11 @@ public class LlvmCompilerDefineFunctionTests { () -> instructions.append("\n") ); assertThat(instructions.toString(), equalTo(""" - %sizePtr__0 = getelementptr {i64 ([0 x i64] *) *, [0 x i64]}, ptr null, i64 0 + %sizePtr__0 = getelementptr {ptr, [0 x i64]}, ptr null, i64 0 %size__0 = ptrtoint ptr %sizePtr__0 to i64 - %closurePointer__0 = call {i64 ([0 x i64] *) *, [0 x i64]} * @shed__runtime__alloc(i64 %size__0) - %closureFunctionPointerPointer__0 = getelementptr {i64 ([0 x i64] *) *, [0 x i64]}, ptr %closurePointer__0, i64 0, i32 0 - store i64 ([0 x i64] *) * @shed__fun__f__0, ptr %closureFunctionPointerPointer__0 + %closurePointer__0 = call ptr @shed__runtime__alloc(i64 %size__0) + %closureFunctionPointerPointer__0 = getelementptr {ptr, [0 x i64]}, ptr %closurePointer__0, i64 0, i32 0 + store ptr @shed__fun__f__0, ptr %closureFunctionPointerPointer__0 %closureValue__0 = ptrtoint ptr %closurePointer__0 to i64""")); assertThat(result.stack(), isSequence( @@ -94,7 +94,7 @@ public class LlvmCompilerDefineFunctionTests { () -> topLevelEntities.append("\n") ); assertThat(topLevelEntities.toString(), equalTo(""" - define i64 @shed__fun__f__0([2 x i64] * %shed__env__0) { + define i64 @shed__fun__f__0(ptr %shed__env__0) { ret i64 0 } """)); @@ -106,14 +106,14 @@ public class LlvmCompilerDefineFunctionTests { () -> instructions.append("\n") ); assertThat(instructions.toString(), equalTo(""" - %sizePtr__0 = getelementptr {i64 ([2 x i64] *) *, [2 x i64]}, ptr null, i64 0 + %sizePtr__0 = getelementptr {ptr, [2 x i64]}, ptr null, i64 0 %size__0 = ptrtoint ptr %sizePtr__0 to i64 - %closurePointer__0 = call {i64 ([2 x i64] *) *, [2 x i64]} * @shed__runtime__alloc(i64 %size__0) - %closureFunctionPointerPointer__0 = getelementptr {i64 ([2 x i64] *) *, [2 x i64]}, ptr %closurePointer__0, i64 0, i32 0 - store i64 ([2 x i64] *) * @shed__fun__f__0, ptr %closureFunctionPointerPointer__0 - %closureFreeVariablePointer__a__0 = getelementptr {i64 ([2 x i64] *) *, [2 x i64]}, ptr %closurePointer__0, i64 0, i32 1, i64 0 + %closurePointer__0 = call ptr @shed__runtime__alloc(i64 %size__0) + %closureFunctionPointerPointer__0 = getelementptr {ptr, [2 x i64]}, ptr %closurePointer__0, i64 0, i32 0 + store ptr @shed__fun__f__0, ptr %closureFunctionPointerPointer__0 + %closureFreeVariablePointer__a__0 = getelementptr {ptr, [2 x i64]}, ptr %closurePointer__0, i64 0, i32 1, i64 0 store i64 1, ptr %closureFreeVariablePointer__a__0 - %closureFreeVariablePointer__b__0 = getelementptr {i64 ([2 x i64] *) *, [2 x i64]}, ptr %closurePointer__0, i64 0, i32 1, i64 1 + %closureFreeVariablePointer__b__0 = getelementptr {ptr, [2 x i64]}, ptr %closurePointer__0, i64 0, i32 1, i64 1 store i64 2, ptr %closureFreeVariablePointer__b__0 %closureValue__0 = ptrtoint ptr %closurePointer__0 to i64""")); 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 29f053fa..06d3f244 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 @@ -57,7 +57,7 @@ public class LlvmIrSerializerOperandsTests { var result = serializeToString(operand, LlvmIrSerializer::serializeOperand); - assertThat(result, equalTo("ptrtoint (i8 * %x to i64)")); + assertThat(result, equalTo("ptrtoint (ptr %x to i64)")); } @Test diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerTypesTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerTypesTests.java index cc085a16..1850f642 100644 --- a/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerTypesTests.java +++ b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerTypesTests.java @@ -20,12 +20,12 @@ public class LlvmIrSerializerTypesTests { } @Test - public void pointerTypeIsSerializedWithElementType() { + public void pointerTypeIsSerializedToOpaquePtr() { var type = LlvmTypes.pointer(LlvmTypes.INT_64); var result = serializeToString(type, LlvmIrSerializer::serializeType); - assertThat(result, equalTo("i64 *")); + assertThat(result, equalTo("ptr")); } @Test -- cgit v1.2.3