SCCP also needs to be taught to follow unwind_to
authorNick Lewycky <nicholas@mxc.ca>
Sun, 9 Mar 2008 09:44:38 +0000 (09:44 +0000)
committerNick Lewycky <nicholas@mxc.ca>
Sun, 9 Mar 2008 09:44:38 +0000 (09:44 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48109 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/SCCP.cpp

index b1c923c2bdcb168d2ef588db7b1ad16a0346ded1..6493f0e40802557f6ec2124f2a344300227baddb 100644 (file)
@@ -1082,6 +1082,10 @@ void SCCPSolver::visitCallSite(CallSite CS) {
     }
   }
   Instruction *I = CS.getInstruction();
+
+  if (!CS.doesNotThrow() && I->getParent()->getUnwindDest())
+    markEdgeExecutable(I->getParent(), I->getParent()->getUnwindDest());
+
   if (I->getType() == Type::VoidTy) return;
 
   LatticeVal &IV = ValueState[I];