aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-17 21:42:33 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-17 21:42:33 +0100
commit2ead93bf3d82dc37bfe440917bfd4244d3a3f14f (patch)
tree1c320940931844c4985c38cb4fa9927106fe2bdd /src
parent9d633e579c5b0ac46eaf3958e1dad6cfe9e5f1da (diff)
Include free variable name in LLVM pointer name
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerClosures.java3
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmCompilerDefineFunctionTests.java8
2 files changed, 6 insertions, 5 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerClosures.java b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerClosures.java
index da60ea7a..b88a8401 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerClosures.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerClosures.java
@@ -324,7 +324,8 @@ public class LlvmCompilerClosures {
LlvmCompilerContext context
) {
var freeVariablePointerResult = context.generateVariableLocal(
- LlvmCompilerLocalVariableSpace.CLOSURE_FREE_VARIABLE_POINTER
+ LlvmCompilerLocalVariableSpace.CLOSURE_FREE_VARIABLE_POINTER,
+ freeVariable.name()
);
var freeVariablePointer = freeVariablePointerResult.value();
context = freeVariablePointerResult.context();
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 d32d7ee5..e3f41a6c 100644
--- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCompilerDefineFunctionTests.java
+++ b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCompilerDefineFunctionTests.java
@@ -111,10 +111,10 @@ public class LlvmCompilerDefineFunctionTests {
%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__0 = getelementptr {i64 ([2 x i64] *) *, [2 x i64]}, ptr %closurePointer__0, i64 0, i32 1, i64 0
- store i64 1, ptr %closureFreeVariablePointer__0
- %closureFreeVariablePointer__1 = getelementptr {i64 ([2 x i64] *) *, [2 x i64]}, ptr %closurePointer__0, i64 0, i32 1, i64 1
- store i64 2, ptr %closureFreeVariablePointer__1
+ %closureFreeVariablePointer__a__0 = getelementptr {i64 ([2 x i64] *) *, [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
+ store i64 2, ptr %closureFreeVariablePointer__b__0
%closureValue__0 = ptrtoint ptr %closurePointer__0 to i64"""));
assertThat(result.stack(), isSequence(