Revamp the SjLj "dispatch setup" intrinsic.
authorBill Wendling <isanbard@gmail.com>
Tue, 5 Apr 2011 01:37:43 +0000 (01:37 +0000)
committerBill Wendling <isanbard@gmail.com>
Tue, 5 Apr 2011 01:37:43 +0000 (01:37 +0000)
commitf05b1dcf870346094f8aaee8e387c92d3e47e98d
treec99e98f1172368733e3692beeb713426261f5a58
parent4fccc86237f6d1e79b0e1365442a53aad4419048
Revamp the SjLj "dispatch setup" intrinsic.

It needed to be moved closer to the setjmp statement, because the code directly
after the setjmp needs to know about values that are on the stack. Also, the
'bitcast' of the function context was causing a dead load. This wouldn't be too
horrible, except that at -O0 it wasn't optimized out, and because it wasn't
using the correct base pointer (if there is a VLA), it would try to access a
value from a garbage address.
<rdar://problem/9130540>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128873 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Intrinsics.td
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
lib/CodeGen/SjLjEHPrepare.cpp
lib/Target/ARM/ARMISelLowering.cpp
lib/Target/ARM/ARMInstrInfo.td