Source file test/live_syscall.go
Documentation: test
1 // errorcheck -0 -m -live 2 3 // +build !windows,!js 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 "assuming arg#1 is unsafe uintptr" 19 20 func g() { // ERROR "can inline g" 21 var t int 22 f(uintptr(unsafe.Pointer(&t))) // ERROR "live at call to f: .?autotmp" "stack object .autotmp_[0-9]+ unsafe.Pointer$" 23 } 24 25 func h() { // ERROR "can inline h" 26 var v int 27 syscall.Syscall(0, 1, uintptr(unsafe.Pointer(&v)), 2) // ERROR "live at call to Syscall: .?autotmp" "stack object .autotmp_[0-9]+ unsafe.Pointer$" 28 } 29 30 func i() { // ERROR "can inline i" 31 var t int 32 p := unsafe.Pointer(&t) 33 f(uintptr(p)) // ERROR "live at call to f: .?autotmp" "stack object .autotmp_[0-9]+ unsafe.Pointer$" 34 } 35 36 func j() { // ERROR "can inline j" 37 var v int 38 p := unsafe.Pointer(&v) 39 syscall.Syscall(0, 1, uintptr(p), 2) // ERROR "live at call to Syscall: .?autotmp" "stack object .autotmp_[0-9]+ unsafe.Pointer$" 40 } 41