mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-03 10:37:46 +00:00
compiler: fix debug metadata
Not setting the correct debug location at function entry leads to instructions getting the address of the previously emitted function, which is of course wrong. LLVM complains about it when validating a module.
This commit is contained in:
@@ -1103,6 +1103,11 @@ func (c *Compiler) parseFunc(frame *Frame) error {
|
||||
frame.fn.llvmFn.SetLinkage(llvm.InternalLinkage)
|
||||
}
|
||||
|
||||
if c.debug {
|
||||
pos := c.ir.program.Fset.Position(frame.fn.fn.Pos())
|
||||
c.builder.SetCurrentDebugLocation(uint(pos.Line), uint(pos.Column), frame.difunc, llvm.Metadata{})
|
||||
}
|
||||
|
||||
// Pre-create all basic blocks in the function.
|
||||
for _, block := range frame.fn.fn.DomPreorder() {
|
||||
llvmBlock := c.ctx.AddBasicBlock(frame.fn.llvmFn, block.Comment)
|
||||
|
||||
Reference in New Issue
Block a user