summaryrefslogtreecommitdiff
path: root/lib/Transforms/IPO
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2011-08-15 18:22:00 +0000
committerBill Wendling <isanbard@gmail.com>2011-08-15 18:22:00 +0000
commitbc4fcbbc7b61e21f154ec3a4687178ec20a5f09b (patch)
treea8a097aa548ab02698062b7d60d0aacffa5eb50c /lib/Transforms/IPO
parent1178fb47018fea531c91ee04e39f30607122e763 (diff)
downloadllvm-bc4fcbbc7b61e21f154ec3a4687178ec20a5f09b.tar.gz
llvm-bc4fcbbc7b61e21f154ec3a4687178ec20a5f09b.tar.bz2
llvm-bc4fcbbc7b61e21f154ec3a4687178ec20a5f09b.tar.xz
Mark the SCC as "might unwind" if we run into a 'resume' instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137627 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/IPO')
-rw-r--r--lib/Transforms/IPO/PruneEH.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/Transforms/IPO/PruneEH.cpp b/lib/Transforms/IPO/PruneEH.cpp
index b7e63dc448..cbb80f0750 100644
--- a/lib/Transforms/IPO/PruneEH.cpp
+++ b/lib/Transforms/IPO/PruneEH.cpp
@@ -101,8 +101,9 @@ bool PruneEH::runOnSCC(CallGraphSCC &SCC) {
// Check to see if this function performs an unwind or calls an
// unwinding function.
for (Function::iterator BB = F->begin(), E = F->end(); BB != E; ++BB) {
- if (CheckUnwind && isa<UnwindInst>(BB->getTerminator())) {
- // Uses unwind!
+ if (CheckUnwind && (isa<UnwindInst>(BB->getTerminator()) ||
+ isa<ResumeInst>(BB->getTerminator()))) {
+ // Uses unwind / resume!
SCCMightUnwind = true;
} else if (CheckReturn && isa<ReturnInst>(BB->getTerminator())) {
SCCMightReturn = true;