aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerClosures.java6
1 files changed, 4 insertions, 2 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 22c55ce2..1f977db2 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerClosures.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerClosures.java
@@ -76,7 +76,7 @@ public class LlvmCompilerClosures {
);
var functionContext = context.enterFunction();
- var functionClosurePointerResult = context.generateVariableLocal(
+ var functionClosurePointerResult = functionContext.generateVariableLocal(
LlvmCompilerLocalVariableSpace.CLOSURE_POINTER
);
var functionClosurePointer = functionClosurePointerResult.value();
@@ -355,11 +355,13 @@ public class LlvmCompilerClosures {
var closureFreeVariable = closureFreeVariableResult.value();
context = closureFreeVariableResult.context();
- return context.addInstruction(new LlvmLoad(
+ context = context.addInstruction(new LlvmLoad(
closureFreeVariable,
LlvmCompilerTypes.VALUE_TYPE,
closureFreeVariablePointer
));
+
+ return context.addLocal(freeVariable.name(), closureFreeVariable);
}
private static LlvmCompilerResult<LlvmVariableLocal> getClosureFreeVariablePointer(