modernc.org/gc@v1.0.1-0.20240304020402-f0dba7c97c2b/testdata/errchk/test/live_syscall.go (about) 1 // errorcheck -0 -m -live 2 3 // +build !windows 4 5 // Copyright 2015 The Go Authors. All rights reserved. 6 // Use of this source code is governed by a BSD-style 7 // license that can be found in the LICENSE file. 8 9 // Test escape analysis and liveness inferred for syscall.Syscall-like functions. 10 11 package p 12 13 import ( 14 "syscall" 15 "unsafe" 16 ) 17 18 func f(uintptr) // ERROR "f assuming arg#1 is unsafe uintptr" 19 20 func g() { 21 var t int 22 f(uintptr(unsafe.Pointer(&t))) // ERROR "live at call to f: .?autotmp" "g &t does not escape" 23 } 24 25 func h() { 26 var v int 27 syscall.Syscall(0, 1, uintptr(unsafe.Pointer(&v)), 2) // ERROR "live at call to Syscall: .?autotmp" "h &v does not escape" 28 } 29 30 func i() { 31 var t int 32 p := unsafe.Pointer(&t) // ERROR "i &t does not escape" 33 f(uintptr(p)) // ERROR "live at call to f: .?autotmp" 34 } 35 36 func j() { 37 var v int 38 p := unsafe.Pointer(&v) // ERROR "j &v does not escape" 39 syscall.Syscall(0, 1, uintptr(p), 2) // ERROR "live at call to Syscall: .?autotmp" 40 }