// errorcheck -0 -m -live

// +build !windows,!js

// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Test escape analysis and liveness inferred for syscall.Syscall-like functions.

package p

import (
	"syscall"
	"unsafe"
)

func f(uintptr) // ERROR "f assuming arg#1 is unsafe uintptr"

func g() {
	var t int
	f(uintptr(unsafe.Pointer(&t))) // ERROR "live at call to f: .?autotmp" "g &t does not escape"
}

func h() {
	var v int
	syscall.Syscall(0, 1, uintptr(unsafe.Pointer(&v)), 2) // ERROR "live at call to Syscall: .?autotmp" "h &v does not escape"
}

func i() {
	var t int
	p := unsafe.Pointer(&t) // ERROR "i &t does not escape"
	f(uintptr(p))           // ERROR "live at call to f: .?autotmp"
}

func j() {
	var v int
	p := unsafe.Pointer(&v)              // ERROR "j &v does not escape"
	syscall.Syscall(0, 1, uintptr(p), 2) // ERROR "live at call to Syscall: .?autotmp"
}
