mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/compile: Avoid and filter out zero-length location-lists.
This change avoids creating zero length location lists by repairing an overly aggressive change in CL146718 and by explicitly checking for and filtering out any zero-length lists that are detected (building compiler+runtime creates a single one). Updates #28486. Change-Id: I01c571fee2376474c7f3038e801bd58fd9e0b820 Reviewed-on: https://go-review.googlesource.com/c/150097 Run-TryBot: David Chase <drchase@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Heschi Kreinick <heschi@google.com>
This commit is contained in:
parent
41d0dc49d2
commit
321a3d6e85
1 changed files with 12 additions and 5 deletions
|
|
@ -881,12 +881,11 @@ func (state *debugState) buildLocationLists(blockLocs []*BlockDebug) {
|
|||
for _, b := range state.f.Blocks {
|
||||
state.mergePredecessors(b, blockLocs, prevBlock)
|
||||
|
||||
// Handle any differences among predecessor blocks and previous block (perhaps not a predecessor)
|
||||
for _, varID := range state.changedVars.contents() {
|
||||
state.updateVar(VarID(varID), b, BlockStart)
|
||||
}
|
||||
|
||||
if !blockLocs[b.ID].relevant {
|
||||
// Handle any differences among predecessor blocks and previous block (perhaps not a predecessor)
|
||||
for _, varID := range state.changedVars.contents() {
|
||||
state.updateVar(VarID(varID), b, BlockStart)
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
||||
|
|
@ -1019,6 +1018,14 @@ func (state *debugState) writePendingEntry(varID VarID, endBlock, endValue ID) {
|
|||
// they get incomplete debug info on 32-bit platforms.
|
||||
return
|
||||
}
|
||||
if start == end {
|
||||
if state.loggingEnabled {
|
||||
// Printf not logf so not gated by GOSSAFUNC; this should fire very rarely.
|
||||
fmt.Printf("Skipping empty location list for %v in %s\n", state.vars[varID], state.f.Name)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
list := state.lists[varID]
|
||||
list = appendPtr(state.ctxt, list, start)
|
||||
list = appendPtr(state.ctxt, list, end)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue