Source file test/live_syscall.go

     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  

View as plain text