summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Scalar/SCCP.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2016-01-24 05:26:18 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2016-01-24 05:26:18 +0000
commit35c46d3e0b587d3d8f2d9daf533e3566e841b943 (patch)
tree43957709f2f58260fc1667b08d8479beed096d88 /llvm/lib/Transforms/Scalar/SCCP.cpp
parent7e15272bbe2e3e3fa3698d8f8fbfa8f3c9557292 (diff)
downloadbcm5719-llvm-35c46d3e0b587d3d8f2d9daf533e3566e841b943.tar.gz
bcm5719-llvm-35c46d3e0b587d3d8f2d9daf533e3566e841b943.zip
[InstCombine, SCCP] Consolidate code used to remove instructions
InstCombine and SCCP both want to remove dead code in a very particular way but using identical means to do so. Share the code between the two. No functionality change is intended. llvm-svn: 258653
Diffstat (limited to 'llvm/lib/Transforms/Scalar/SCCP.cpp')
-rw-r--r--llvm/lib/Transforms/Scalar/SCCP.cpp21
1 files changed, 2 insertions, 19 deletions
diff --git a/llvm/lib/Transforms/Scalar/SCCP.cpp b/llvm/lib/Transforms/Scalar/SCCP.cpp
index 4b18679a9c4..902fbdfc295 100644
--- a/llvm/lib/Transforms/Scalar/SCCP.cpp
+++ b/llvm/lib/Transforms/Scalar/SCCP.cpp
@@ -1568,25 +1568,8 @@ static void DeleteInstructionInBlock(BasicBlock *BB) {
DEBUG(dbgs() << " BasicBlock Dead:" << *BB);
++NumDeadBlocks;
- // Check to see if there are non-terminating instructions to delete.
- if (isa<TerminatorInst>(BB->begin()))
- return;
-
- // Delete the instructions backwards, as it has a reduced likelihood of having
- // to update as many def-use and use-def chains.
- Instruction *EndInst = BB->getTerminator(); // Last not to be deleted.
- while (EndInst != BB->begin()) {
- // Delete the next to last instruction.
- Instruction *Inst = &*--EndInst->getIterator();
- if (!Inst->use_empty())
- Inst->replaceAllUsesWith(UndefValue::get(Inst->getType()));
- if (Inst->isEHPad()) {
- EndInst = Inst;
- continue;
- }
- BB->getInstList().erase(Inst);
- ++NumInstRemoved;
- }
+ unsigned NumRemovedInBB = removeAllNonTerminatorAndEHPadInstructions(BB);
+ NumInstRemoved += NumRemovedInBB;
}
// runOnFunction() - Run the Sparse Conditional Constant Propagation algorithm,
OpenPOWER on IntegriCloud