summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SjLjEHPrepare.cpp
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2011-10-17 22:26:23 +0000
committerBill Wendling <isanbard@gmail.com>2011-10-17 22:26:23 +0000
commitaa9047d3f5ee40d752ddc216d8bc1fcf1c0eaa66 (patch)
tree8fd1b1c41717d1c9ced1a2e82c8e2a8437cbeb5d /llvm/lib/CodeGen/SjLjEHPrepare.cpp
parent741cd73aabed61a94642707134eec04b6b299ade (diff)
downloadbcm5719-llvm-aa9047d3f5ee40d752ddc216d8bc1fcf1c0eaa66.tar.gz
bcm5719-llvm-aa9047d3f5ee40d752ddc216d8bc1fcf1c0eaa66.zip
Now Igor, throw the switch...give my creation life!
Use the custom inserter for the ARM setjmp intrinsics. Instead of creating the SjLj dispatch table in IR, where it frequently violates serveral assumptions -- in particular assumptions made by the landingpad instruction about what can branch to a landing pad and what cannot. Performing this in the back-end allows us to violate these assumptions without the IR getting angry at us. It also allows us to perform a small optimization. We can shove the address of the dispatch's basic block into the function context and not have to add code around the setjmp to check for the return value and jump to the dispatch. Neat, huh? <rdar://problem/10116753> llvm-svn: 142294
Diffstat (limited to 'llvm/lib/CodeGen/SjLjEHPrepare.cpp')
-rw-r--r--llvm/lib/CodeGen/SjLjEHPrepare.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/SjLjEHPrepare.cpp b/llvm/lib/CodeGen/SjLjEHPrepare.cpp
index ded2459d427..3ccf39ba245 100644
--- a/llvm/lib/CodeGen/SjLjEHPrepare.cpp
+++ b/llvm/lib/CodeGen/SjLjEHPrepare.cpp
@@ -36,6 +36,7 @@
using namespace llvm;
static cl::opt<bool> DisableOldSjLjEH("disable-old-sjlj-eh", cl::Hidden,
+ cl::init(true),
cl::desc("Disable the old SjLj EH preparation pass"));
STATISTIC(NumInvokes, "Number of invokes replaced");
OpenPOWER on IntegriCloud