diff options
author | Magnus Lång <[email protected]> | 2016-11-07 17:50:22 +0100 |
---|---|---|
committer | Magnus Lång <[email protected]> | 2016-11-07 18:05:49 +0100 |
commit | 537ae156bb024978094aa1a4827a0aec83c70459 (patch) | |
tree | f12b0b5480d7c568320d9c5a53c73d8ec05ddadc /lib/hipe/x86/hipe_x86_cfg.erl | |
parent | d5f0e614ab2998a153de569290bf2fca78d88af6 (diff) | |
download | otp-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