  src/cmd/compile/internal/ssa/testdata/scopes.go
22:	func test() {
23:		x := id(0)
24:		y := id(0)
25:		fmt.Println(x)
0:
27:			x := i * i
28:			y += id(x) //gdb-dbg=(x,y)//gdb-opt=(x,y)
x = 0
y = 0
26:		for i := x; i < 3; i++ {
27:			x := i * i
28:			y += id(x) //gdb-dbg=(x,y)//gdb-opt=(x,y)
x = 1
y = 0
26:		for i := x; i < 3; i++ {
27:			x := i * i
28:			y += id(x) //gdb-dbg=(x,y)//gdb-opt=(x,y)
x = 4
y = 1
26:		for i := x; i < 3; i++ {
31:		fmt.Println(x, y)
30:		y = x + y //gdb-dbg=(x,y)//gdb-opt=(x,y)
x = 0
y = 5
0: 5
35:			f1(a)
38:				f2(b)
39:				if gretbool() {
41:					f3(c)
46:				f5(b)
48:			f6(a)
33:		for x := 0; x <= 1; x++ { // From delve scopetest.go
35:			f1(a)
38:				f2(b)
39:				if gretbool() {
44:					f4(int(c))
46:				f5(b)
48:			f6(a)
33:		for x := 0; x <= 1; x++ { // From delve scopetest.go
53:				j = id(1)
54:				f = id(2)
56:			for i := 0; i <= 5; i++ {
58:				if i == f {
62:				sleepytime()
56:			for i := 0; i <= 5; i++ {
58:				if i == f {
62:				sleepytime()
56:			for i := 0; i <= 5; i++ {
58:				if i == f {
59:					fmt.Println("foo")
64:			helloworld()
66:	}
15:	}
