• David Lazar's avatar
    cmd/compile: don't inline functions that call runtime.getcaller{pc,sp} · 2397cd0f
    David Lazar authored
    runtime.getcaller{pc,sp} expect their argument to be a pointer to the
    caller's first function argument. This assumption breaks when the caller
    is inlined. For example, with -l=4, calls to runtime.entersyscall (which
    calls getcallerpc) are inlined and that breaks multiple cgo tests.
    
    This change modifies the compiler to refuse to inline functions that
    call runtime.getcaller{pc,sp}. Alternatively, we could mark these
    functions //go:noinline but that limits optimization opportunities if
    the calls to getcaller{pc,sp} are eliminated as dead code.
    
    Previously TestCgoPprofPIE, TestCgoPprof, and TestCgoCallbackGC failed
    with -l=4. Now all of the runtime tests pass with -l=4.
    
    Change-Id: I258bca9025e20fc451e673a18f862b5da1e07ae7
    Reviewed-on: https://go-review.googlesource.com/40998
    Run-TryBot: David Lazar <lazard@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
    Reviewed-by: 's avatarAustin Clements <austin@google.com>
    2397cd0f
Name
Last commit
Last update
..
addr2line Loading commit data...
api Loading commit data...
asm Loading commit data...
cgo Loading commit data...
compile Loading commit data...
cover Loading commit data...
dist Loading commit data...
doc Loading commit data...
fix Loading commit data...
go Loading commit data...
gofmt Loading commit data...
internal Loading commit data...
link Loading commit data...
nm Loading commit data...
objdump Loading commit data...
pack Loading commit data...
pprof Loading commit data...
trace Loading commit data...
vendor Loading commit data...
vet Loading commit data...