modernc.org/gc@v1.0.1-0.20240304020402-f0dba7c97c2b/testdata/errchk/test/uintptrescapes2.go (about) 1 // errorcheck -0 -m -live 2 3 // Copyright 2016 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 // Test escape analysis and liveness inferred for uintptrescapes functions. 8 9 package p 10 11 import ( 12 "unsafe" 13 ) 14 15 //go:uintptrescapes 16 //go:noinline 17 func F1(a uintptr) {} // ERROR "escaping uintptr" 18 19 //go:uintptrescapes 20 //go:noinline 21 func F2(a ...uintptr) {} // ERROR "escaping ...uintptr" "a does not escape" 22 23 func G() { 24 var t int // ERROR "moved to heap" 25 F1(uintptr(unsafe.Pointer(&t))) // ERROR "live at call to F1: .?autotmp" "&t escapes to heap" 26 } 27 28 func H() { 29 var v int // ERROR "moved to heap" 30 F2(0, 1, uintptr(unsafe.Pointer(&v)), 2) // ERROR "live at call to newobject: .?autotmp" "live at call to F2: .?autotmp" "escapes to heap" 31 }