diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-17 22:09:43 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-17 22:09:43 +0100 |
| commit | ddf005024d396dd4194447bdc0cbe6ef03d43df0 (patch) | |
| tree | 55c93e92c97ae4174b4348b3ba60468a0bc6a8d3 /src/main/java/org | |
| parent | 5966b8fbed429454f9de6756fc0cb54cb9d0aafa (diff) | |
Add loaded free variables as locals
Diffstat (limited to 'src/main/java/org')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerClosures.java | 6 |
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( |
