Index: debug/debug.go =================================================================== --- debug/debug.go +++ debug/debug.go @@ -150,24 +150,29 @@ // Declare creates an llvm.dbg.declare call for the specified function // parameter or local variable. func (d *DIBuilder) Declare(b llvm.Builder, v ssa.Value, llv llvm.Value, paramIndex int) { - tag := tagAutoVariable - if paramIndex >= 0 { - tag = tagArgVariable - } var diFile llvm.Metadata var line int if file := d.fset.File(v.Pos()); file != nil { line = file.Line(v.Pos()) diFile = d.getFile(file) } - localVar := d.builder.CreateLocalVariable(d.scope(), llvm.DILocalVariable{ - Tag: tag, - Name: llv.Name(), - File: diFile, - Line: line, - ArgNo: paramIndex + 1, - Type: d.DIType(v.Type()), - }) + var localVar llvm.Metadata + if paramIndex >= 0 { + localVar = d.builder.CreateParameterVariable(d.scope(), llvm.DIParameterVariable{ + Name: llv.Name(), + File: diFile, + Line: line, + ArgNo: paramIndex + 1, + Type: d.DIType(v.Type()), + }) + } else { + localVar = d.builder.CreateAutoVariable(d.scope(), llvm.DIAutoVariable{ + Name: llv.Name(), + File: diFile, + Line: line, + Type: d.DIType(v.Type()), + }) + } expr := d.builder.CreateExpression(nil) d.builder.InsertDeclareAtEnd(llv, localVar, expr, b.GetInsertBlock()) }