// errorcheck -0 -live -wb=0

// Copyright 2014 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.

// liveness tests with inlining ENABLED
// see also live.go.

package main

// issue 8142: lost 'addrtaken' bit on inlined variables.
// no inlining in this test, so just checking that non-inlined works.

func printnl()

//go:noescape
func useT40(*T40)

type T40 struct {
	m map[int]int
}

func newT40() *T40 {
	ret := T40{}
	ret.m = make(map[int]int, 42) // ERROR "live at call to makemap: &ret$"
	return &ret
}

func bad40() {
	t := newT40() // ERROR "live at call to makemap: .autotmp_[0-9]+ ret$"
	printnl()     // ERROR "live at call to printnl: .autotmp_[0-9]+ ret$"
	useT40(t)     // ERROR "live at call to useT40: .autotmp_[0-9]+ ret$"
}

func good40() {
	ret := T40{}
	ret.m = make(map[int]int, 42) // ERROR "live at call to makemap: .autotmp_[0-9]+ ret$"
	t := &ret
	printnl() // ERROR "live at call to printnl: .autotmp_[0-9]+ ret$"
	useT40(t) // ERROR "live at call to useT40: .autotmp_[0-9]+ ret$"
}
