diff options
| author | Owen Anderson <resistor@mac.com> | 2008-07-03 17:21:41 +0000 |
|---|---|---|
| committer | Owen Anderson <resistor@mac.com> | 2008-07-03 17:21:41 +0000 |
| commit | d57cdc3c60f3ec122a7c6f27127365dbf25d473a (patch) | |
| tree | 51c34a3b1c19a0de3a7ccb4d870a8dd1866bf5a8 /llvm/lib/Transforms/Scalar | |
| parent | 38b1e57a4d8e629d56b1a0d6c6fb5a24aa95cc8a (diff) | |
| download | bcm5719-llvm-d57cdc3c60f3ec122a7c6f27127365dbf25d473a.tar.gz bcm5719-llvm-d57cdc3c60f3ec122a7c6f27127365dbf25d473a.zip | |
Remove the ability for ADCE to remove unreachable blocks in loop nests, because, as Eli pointed out, SimplifyCFG already does this.
llvm-svn: 53104
Diffstat (limited to 'llvm/lib/Transforms/Scalar')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/ADCE.cpp | 38 |
1 files changed, 0 insertions, 38 deletions
diff --git a/llvm/lib/Transforms/Scalar/ADCE.cpp b/llvm/lib/Transforms/Scalar/ADCE.cpp index c5561995deb..aef16f7f1ce 100644 --- a/llvm/lib/Transforms/Scalar/ADCE.cpp +++ b/llvm/lib/Transforms/Scalar/ADCE.cpp @@ -53,44 +53,6 @@ bool ADCE::runOnFunction(Function& F) { SmallPtrSet<Instruction*, 128> alive; SmallVector<Instruction*, 128> worklist; - SmallPtrSet<BasicBlock*, 64> reachable; - SmallVector<BasicBlock*, 16> unreachable; - - // First, collect the set of reachable blocks ... - for (df_ext_iterator<BasicBlock*, SmallPtrSet<BasicBlock*, 64> > - DI = df_ext_begin(&F.getEntryBlock(), reachable), - DE = df_ext_end(&F.getEntryBlock(), reachable); DI != DE; ++DI) - ; // Deliberately empty, df_ext_iterator will fill in the set. - - // ... and then invert it into the list of unreachable ones. These - // blocks will be removed from the function. - for (Function::iterator FI = F.begin(), FE = F.end(); FI != FE; ++FI) - if (!reachable.count(FI)) - unreachable.push_back(FI); - - // Prepare to remove blocks by removing the PHI node entries for those blocks - // in their successors, and remove them from reference counting. - for (SmallVector<BasicBlock*, 16>::iterator UI = unreachable.begin(), - UE = unreachable.end(); UI != UE; ++UI) { - BasicBlock* BB = *UI; - for (succ_iterator SI = succ_begin(BB), SE = succ_end(BB); - SI != SE; ++SI) { - BasicBlock* succ = *SI; - BasicBlock::iterator succ_inst = succ->begin(); - while (PHINode* P = dyn_cast<PHINode>(succ_inst)) { - P->removeIncomingValue(BB); - ++succ_inst; - } - } - - BB->dropAllReferences(); - } - - // Finally, erase the unreachable blocks. - for (SmallVector<BasicBlock*, 16>::iterator UI = unreachable.begin(), - UE = unreachable.end(); UI != UE; ++UI) - (*UI)->eraseFromParent(); - // Collect the set of "root" instructions that are known live. for (inst_iterator I = inst_begin(F), E = inst_end(F); I != E; ++I) if (isa<TerminatorInst>(I.getInstructionIterator()) || |

