// 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
}
