diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-01-24 05:26:18 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-01-24 05:26:18 +0000 |
commit | 35c46d3e0b587d3d8f2d9daf533e3566e841b943 (patch) | |
tree | 43957709f2f58260fc1667b08d8479beed096d88 /llvm/lib/Transforms/Scalar/SCCP.cpp | |
parent | 7e15272bbe2e3e3fa3698d8f8fbfa8f3c9557292 (diff) | |
download | bcm5719-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.cpp | 21 |
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, |