1 // errorcheck -0 -live -wb=0 2 3 // Copyright 2014 The Go Authors. All rights reserved. 4 // Use of this source code is governed by a BSD-style 5 // license that can be found in the LICENSE file. 6 7 // liveness tests with inlining ENABLED 8 // see also live.go. 9 10 package main 11 12 // issue 8142: lost 'addrtaken' bit on inlined variables. 13 // no inlining in this test, so just checking that non-inlined works. 14 15 func printnl() 16 17 //go:noescape 18 func useT40(*T40) 19 20 type T40 struct { 21 m map[int]int 22 } 23 24 func newT40() *T40 { 25 ret := T40{} 26 ret.m = make(map[int]int, 42) // ERROR "live at call to makemap: &ret$" 27 return &ret 28 } 29 30 func bad40() { 31 t := newT40() // ERROR "live at call to makemap: .autotmp_[0-9]+ ret$" 32 printnl() // ERROR "live at call to printnl: .autotmp_[0-9]+ ret$" 33 useT40(t) // ERROR "live at call to useT40: .autotmp_[0-9]+ ret$" 34 } 35 36 func good40() { 37 ret := T40{} 38 ret.m = make(map[int]int, 42) // ERROR "live at call to makemap: .autotmp_[0-9]+ ret$" 39 t := &ret 40 printnl() // ERROR "live at call to printnl: .autotmp_[0-9]+ ret$" 41 useT40(t) // ERROR "live at call to useT40: .autotmp_[0-9]+ ret$" 42 } 43