// errorcheck -0 -m -l // Copyright 2019 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. // Test escape analysis for goto statements. package escape var x bool func f1() { var p *int loop: if x { goto loop } // BAD: We should be able to recognize that there // aren't any more "goto loop" after here. p = new(int) // ERROR "escapes to heap" _ = p } func f2() { var p *int if x { loop: goto loop } else { p = new(int) // ERROR "does not escape" } _ = p } func f3() { var p *int if x { loop: goto loop } p = new(int) // ERROR "does not escape" _ = p }