diff options
Diffstat (limited to 'src/cmd/compile/internal/ssa/testdata/scopes.go')
-rw-r--r-- | src/cmd/compile/internal/ssa/testdata/scopes.go | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/ssa/testdata/scopes.go b/src/cmd/compile/internal/ssa/testdata/scopes.go new file mode 100644 index 0000000..e93d699 --- /dev/null +++ b/src/cmd/compile/internal/ssa/testdata/scopes.go @@ -0,0 +1,107 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package main + +import ( + "fmt" + "time" +) + +func main() { + growstack() // Use stack early to prevent growth during test, which confuses gdb + test() +} + +//go:noinline +func id(x int) int { + return x +} + +func test() { + x := id(0) + y := id(0) + fmt.Println(x) + for i := x; i < 3; i++ { + x := i * i + y += id(x) //gdb-dbg=(x,y)//gdb-opt=(x,y) + } + y = x + y //gdb-dbg=(x,y)//gdb-opt=(x,y) + fmt.Println(x, y) + + for x := 0; x <= 1; x++ { // From delve scopetest.go + a := y + f1(a) + { + b := 0 + f2(b) + if gretbool() { + c := 0 + f3(c) + } else { + c := 1.1 + f4(int(c)) + } + f5(b) + } + f6(a) + } + + { // From delve testnextprog.go + var ( + j = id(1) + f = id(2) + ) + for i := 0; i <= 5; i++ { + j += j * (j ^ 3) / 100 + if i == f { + fmt.Println("foo") + break + } + sleepytime() + } + helloworld() + } +} + +func sleepytime() { + time.Sleep(5 * time.Millisecond) +} + +func helloworld() { + fmt.Println("Hello, World!") +} + +//go:noinline +func f1(x int) {} + +//go:noinline +func f2(x int) {} + +//go:noinline +func f3(x int) {} + +//go:noinline +func f4(x int) {} + +//go:noinline +func f5(x int) {} + +//go:noinline +func f6(x int) {} + +var boolvar = true + +func gretbool() bool { + x := boolvar + boolvar = !boolvar + return x +} + +var sink string + +//go:noinline +func growstack() { + sink = fmt.Sprintf("%#v,%#v,%#v", 1, true, "cat") +} |