diff options
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/compiler.go | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/compiler/compiler.go b/compiler/compiler.go index 33b5ab4fd..eaf73e221 100644 --- a/compiler/compiler.go +++ b/compiler/compiler.go @@ -1025,6 +1025,18 @@ func (b *builder) createFunctionDefinition() { phi.llvm.AddIncoming([]llvm.Value{llvmVal}, []llvm.BasicBlock{llvmBlock}) } } + + if b.NeedsStackObjects() { + // Track phi nodes. + for _, phi := range b.phis { + insertPoint := llvm.NextInstruction(phi.llvm) + for !insertPoint.IsAPHINode().IsNil() { + insertPoint = llvm.NextInstruction(insertPoint) + } + b.SetInsertPointBefore(insertPoint) + b.trackValue(phi.llvm) + } + } } // createInstruction builds the LLVM IR equivalent instructions for the |