cl: don't declare var of ssa.Alloc and ssa.FieldAddr
This commit is contained in:
@@ -730,26 +730,21 @@ func (p *context) compileInstr(b llssa.Builder, instr ssa.Instruction) {
|
|||||||
// Not a local variable.
|
// Not a local variable.
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if v.IsAddr {
|
||||||
|
// skip *ssa.Alloc or *ssa.FieldAddr
|
||||||
|
return
|
||||||
|
}
|
||||||
pos := p.goProg.Fset.Position(v.Pos())
|
pos := p.goProg.Fset.Position(v.Pos())
|
||||||
value := p.compileValue(b, v.X)
|
value := p.compileValue(b, v.X)
|
||||||
fn := v.Parent()
|
fn := v.Parent()
|
||||||
dbgVar := p.getLocalVariable(b, fn, variable)
|
dbgVar := p.getLocalVariable(b, fn, variable)
|
||||||
if v.IsAddr {
|
b.DIValue(value, dbgVar, p.fn, pos, b.Func.Block(v.Block().Index))
|
||||||
// *ssa.Alloc or *ssa.FieldAddr
|
|
||||||
b.DIDeclare(value, dbgVar, p.fn, pos, b.Func.Block(v.Block().Index))
|
|
||||||
} else {
|
|
||||||
b.DIValue(value, dbgVar, p.fn, pos, b.Func.Block(v.Block().Index))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
panic(fmt.Sprintf("compileInstr: unknown instr - %T\n", instr))
|
panic(fmt.Sprintf("compileInstr: unknown instr - %T\n", instr))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type poser interface {
|
|
||||||
Pos() token.Pos
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *context) getLocalVariable(b llssa.Builder, fn *ssa.Function, v *types.Var) llssa.DIVar {
|
func (p *context) getLocalVariable(b llssa.Builder, fn *ssa.Function, v *types.Var) llssa.DIVar {
|
||||||
pos := p.fset.Position(v.Pos())
|
pos := p.fset.Position(v.Pos())
|
||||||
t := b.Prog.Type(v.Type(), llssa.InGo)
|
t := b.Prog.Type(v.Type(), llssa.InGo)
|
||||||
|
|||||||
Reference in New Issue
Block a user