cmd/compile: enhance debug_test for infinite loops
ssa/debug_test.go already had a step limit; this exposes
it to individual tests, and it is then set low for the
infinite loop tests.
That however is not enough; in an infinite loop debuggers
see an unchanging line number, and therefore keep trying
until they see a different one. To do this, the concept
of a "bogus" line number is introduced, and on output
single-instruction infinite loops are detected and a
hardware nop with correct line number is inserted into
the loop; the branch itself receives a bogus line number.
This breaks up the endless stream of same line number and
causes both gdb and delve to not hang; Delve complains
about the incorrect line number while gdb does
a sort of odd step-to-nowhere that then steps back
to the loop. Since repeats are suppressed in the reference
file, a single line is shown there.
(The wrong line number mentioned in previous message
was an artifact of debug_test.go, not Delve, and is now
fixed.)
The bogus line number exposed in Delve is less than
wonderful, but compared to hanging, it is better.
Fixes #30664.
Change-Id: I30c927cf8869a84c6c9b84033ee44d7044aab552
Reviewed-on: https://go-review.googlesource.com/c/go/+/168477
Run-TryBot: David Chase <drchase@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>