aboutsummaryrefslogtreecommitdiffstats
path: root/lib/hipe/x86/hipe_x86_cfg.erl
diff options
context:
space:
mode:
authorMagnus Lång <[email protected]>2016-11-07 17:50:22 +0100
committerMagnus Lång <[email protected]>2016-11-07 18:05:49 +0100
commit537ae156bb024978094aa1a4827a0aec83c70459 (patch)
treef12b0b5480d7c568320d9c5a53c73d8ec05ddadc /lib/hipe/x86/hipe_x86_cfg.erl
parentd5f0e614ab2998a153de569290bf2fca78d88af6 (diff)
downloadotp-537ae156bb024978094aa1a4827a0aec83c70459.tar.gz
otp-537ae156bb024978094aa1a4827a0aec83c70459.tar.bz2
otp-537ae156bb024978094aa1a4827a0aec83c70459.zip
hipe_llvm: Work around LLVM 3.9 sdesc bug
As of LLVM 3.9, the x86-call-frame-opt pass in LLVM's X86 backend causes the stack descriptors to contain incorrect (or even negative) frame sizes or root slot offsets. This might cause LLVM-compiled modules to be rejected during loading with a badarg exception in hipe_bifs:enter_sdecs/1 (which additionally prints a "hipe_bifs_enter_sdesc_1: bad sdesc!" message to stderr), or it might cause corruption or segmentation faults when walking stacks (f.ex. during GC) containing frames compiled with ErLLVM. As a workaround, we pass the -no-x86-call-frame-opt flag to llc when the version is at least 3.9
Diffstat (limited to 'lib/hipe/x86/hipe_x86_cfg.erl')
0 files changed, 0 insertions, 0 deletions