summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Scalar/SCCP.cpp
diff options
context:
space:
mode:
authorNick Lewycky <nicholas@mxc.ca>2008-03-08 07:48:41 +0000
committerNick Lewycky <nicholas@mxc.ca>2008-03-08 07:48:41 +0000
commit35e92c7bea7836cbac1939c5caa9fb8d40f414b5 (patch)
treefc3e392cb1f0f2d51fcf02fea2e1dc5f7a18930e /llvm/lib/Transforms/Scalar/SCCP.cpp
parenta53414fd79f78ee960740a15ea85307dee5b7ecf (diff)
downloadbcm5719-llvm-35e92c7bea7836cbac1939c5caa9fb8d40f414b5.tar.gz
bcm5719-llvm-35e92c7bea7836cbac1939c5caa9fb8d40f414b5.zip
Not all users of a BB are Instructions any more.
llvm-svn: 48047
Diffstat (limited to 'llvm/lib/Transforms/Scalar/SCCP.cpp')
-rw-r--r--llvm/lib/Transforms/Scalar/SCCP.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Scalar/SCCP.cpp b/llvm/lib/Transforms/Scalar/SCCP.cpp
index 561cdb1fbb4..b1c923c2bdc 100644
--- a/llvm/lib/Transforms/Scalar/SCCP.cpp
+++ b/llvm/lib/Transforms/Scalar/SCCP.cpp
@@ -45,7 +45,7 @@ using namespace llvm;
STATISTIC(NumInstRemoved, "Number of instructions removed");
STATISTIC(NumDeadBlocks , "Number of basic blocks unreachable");
-STATISTIC(IPNumInstRemoved, "Number ofinstructions removed by IPSCCP");
+STATISTIC(IPNumInstRemoved, "Number of instructions removed by IPSCCP");
STATISTIC(IPNumDeadBlocks , "Number of basic blocks unreachable by IPSCCP");
STATISTIC(IPNumArgsElimed ,"Number of arguments constant propagated by IPSCCP");
STATISTIC(IPNumGlobalConst, "Number of globals found to be constant by IPSCCP");
@@ -1637,6 +1637,11 @@ bool IPSCCP::runOnModule(Module &M) {
// If there are any PHI nodes in this successor, drop entries for BB now.
BasicBlock *DeadBB = BlocksToErase[i];
while (!DeadBB->use_empty()) {
+ if (BasicBlock *PredBB = dyn_cast<BasicBlock>(DeadBB->use_back())) {
+ PredBB->setUnwindDest(NULL);
+ continue;
+ }
+
Instruction *I = cast<Instruction>(DeadBB->use_back());
bool Folded = ConstantFoldTerminator(I->getParent());
if (!Folded) {
OpenPOWER on IntegriCloud