• 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
.github Loading commit data...
api Loading commit data...
doc Loading commit data...
lib/time Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTING.md Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README.md Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...