blob: f693e9357a6734da124e638874ddb4acbd2149e6 [file] [log] [blame]
Dan Willemsen38f2dba2016-07-08 14:54:35 -07001// 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
11package p
12
13import (
14 "syscall"
15 "unsafe"
16)
17
18func f(uintptr) // ERROR "f assuming arg#1 is unsafe uintptr"
19
20func g() {
21 var t int
Dan Willemsenebae3022017-01-13 23:01:08 -080022 f(uintptr(unsafe.Pointer(&t))) // ERROR "live at call to f: .?autotmp" "g &t does not escape"
Dan Willemsen38f2dba2016-07-08 14:54:35 -070023}
24
25func h() {
26 var v int
Dan Willemsenebae3022017-01-13 23:01:08 -080027 syscall.Syscall(0, 1, uintptr(unsafe.Pointer(&v)), 2) // ERROR "live at call to Syscall: .?autotmp" "h &v does not escape"
Dan Willemsen38f2dba2016-07-08 14:54:35 -070028}