diff options
author | Chris Lattner <sabre@nondot.org> | 2008-12-03 06:37:44 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-12-03 06:37:44 +0000 |
commit | 2b1ba24fb75e633560846e551acadade92783bb3 (patch) | |
tree | c35b89ce8a58f3305c854e83a1d3126160614545 /lib/Transforms/Utils/SimplifyCFG.cpp | |
parent | 62c939d7d5572e57963a5f26fb6fe802e13dc0bf (diff) |
Factor some code out of SimplifyCFG, forming a new
DeleteBlockIfDead method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60463 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Utils/SimplifyCFG.cpp')
-rw-r--r-- | lib/Transforms/Utils/SimplifyCFG.cpp | 22 |
1 files changed, 1 insertions, 21 deletions
diff --git a/lib/Transforms/Utils/SimplifyCFG.cpp b/lib/Transforms/Utils/SimplifyCFG.cpp index 9ba75502e7..7077436a1d 100644 --- a/lib/Transforms/Utils/SimplifyCFG.cpp +++ b/lib/Transforms/Utils/SimplifyCFG.cpp @@ -1681,27 +1681,7 @@ bool llvm::SimplifyCFG(BasicBlock *BB) { // as a predecessor. These are unreachable. if (pred_begin(BB) == pred_end(BB) || BB->getSinglePredecessor() == BB) { DOUT << "Removing BB: \n" << *BB; - - // Loop through all of our successors and make sure they know that one - // of their predecessors is going away. - for (succ_iterator SI = succ_begin(BB), E = succ_end(BB); SI != E; ++SI) - SI->removePredecessor(BB); - - while (!BB->empty()) { - Instruction &I = BB->back(); - // If this instruction is used, replace uses with an arbitrary - // value. Because control flow can't get here, we don't care - // what we replace the value with. Note that since this block is - // unreachable, and all values contained within it must dominate their - // uses, that all uses will eventually be removed. - if (!I.use_empty()) - // Make all users of this instruction use undef instead - I.replaceAllUsesWith(UndefValue::get(I.getType())); - - // Remove the instruction from the basic block - BB->getInstList().pop_back(); - } - BB->eraseFromParent(); + DeleteBlockIfDead(BB); return true; } |