• 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
..
amd64 Loading commit data...
arm Loading commit data...
arm64 Loading commit data...
gc Loading commit data...
mips Loading commit data...
mips64 Loading commit data...
ppc64 Loading commit data...
s390x Loading commit data...
ssa Loading commit data...
syntax Loading commit data...
test Loading commit data...
types Loading commit data...
x86 Loading commit data...