summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Scalar/SCCP.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2016-01-24 06:26:47 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2016-01-24 06:26:47 +0000
commit88542a0a69b9f184bf0df582b5e5bb11f2609f1d (patch)
treea750e762cf3ef1355b52893085170881bf662069 /llvm/lib/Transforms/Scalar/SCCP.cpp
parent35c46d3e0b587d3d8f2d9daf533e3566e841b943 (diff)
downloadbcm5719-llvm-88542a0a69b9f184bf0df582b5e5bb11f2609f1d.tar.gz
bcm5719-llvm-88542a0a69b9f184bf0df582b5e5bb11f2609f1d.zip
[SCCP] Remove duplicate code
SCCP has code identical to changeToUnreachable's behavior, switch it over to just call changeToUnreachable. No functionality change intended. llvm-svn: 258654
Diffstat (limited to 'llvm/lib/Transforms/Scalar/SCCP.cpp')
-rw-r--r--llvm/lib/Transforms/Scalar/SCCP.cpp31
1 files changed, 11 insertions, 20 deletions
diff --git a/llvm/lib/Transforms/Scalar/SCCP.cpp b/llvm/lib/Transforms/Scalar/SCCP.cpp
index 902fbdfc295..d1b0d2547e2 100644
--- a/llvm/lib/Transforms/Scalar/SCCP.cpp
+++ b/llvm/lib/Transforms/Scalar/SCCP.cpp
@@ -1564,14 +1564,6 @@ FunctionPass *llvm::createSCCPPass() {
return new SCCP();
}
-static void DeleteInstructionInBlock(BasicBlock *BB) {
- DEBUG(dbgs() << " BasicBlock Dead:" << *BB);
- ++NumDeadBlocks;
-
- unsigned NumRemovedInBB = removeAllNonTerminatorAndEHPadInstructions(BB);
- NumInstRemoved += NumRemovedInBB;
-}
-
// runOnFunction() - Run the Sparse Conditional Constant Propagation algorithm,
// and return true if the function was modified.
//
@@ -1608,7 +1600,11 @@ bool SCCP::runOnFunction(Function &F) {
for (Function::iterator BB = F.begin(), E = F.end(); BB != E; ++BB) {
if (!Solver.isBlockExecutable(&*BB)) {
- DeleteInstructionInBlock(&*BB);
+ DEBUG(dbgs() << " BasicBlock Dead:" << *BB);
+
+ ++NumDeadBlocks;
+ NumInstRemoved += removeAllNonTerminatorAndEHPadInstructions(BB);
+
MadeChanges = true;
continue;
}
@@ -1806,18 +1802,13 @@ bool IPSCCP::runOnModule(Module &M) {
for (Function::iterator BB = F->begin(), E = F->end(); BB != E; ++BB) {
if (!Solver.isBlockExecutable(&*BB)) {
- DeleteInstructionInBlock(&*BB);
- MadeChanges = true;
+ DEBUG(dbgs() << " BasicBlock Dead:" << *BB);
- TerminatorInst *TI = BB->getTerminator();
- for (BasicBlock *Succ : TI->successors()) {
- if (!Succ->empty() && isa<PHINode>(Succ->begin()))
- Succ->removePredecessor(&*BB);
- }
- if (!TI->use_empty())
- TI->replaceAllUsesWith(UndefValue::get(TI->getType()));
- TI->eraseFromParent();
- new UnreachableInst(M.getContext(), &*BB);
+ ++NumDeadBlocks;
+ NumInstRemoved +=
+ changeToUnreachable(&*BB->begin(), /*UseLLVMTrap=*/false);
+
+ MadeChanges = true;
if (&*BB != &F->front())
BlocksToErase.push_back(&*BB);
OpenPOWER on IntegriCloud