Add r134057 back, but splice the predecessor after the successors phi

nodes.

Original message:
Let simplify cfg simplify bb with only debug and lifetime intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134182 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola
2011-06-30 20:14:24 +00:00
parent ff97eb0cf4
commit 77a2c372fa
5 changed files with 68 additions and 11 deletions

View File

@@ -147,6 +147,26 @@ Instruction* BasicBlock::getFirstNonPHIOrDbg() {
return &*i;
}
Instruction* BasicBlock::getFirstNonPHIOrDbgOrLifetime() {
// All valid basic blocks should have a terminator,
// which is not a PHINode. If we have an invalid basic
// block we'll get an assertion failure when dereferencing
// a past-the-end iterator.
BasicBlock::iterator i = begin();
for (;; ++i) {
if (isa<PHINode>(i) || isa<DbgInfoIntrinsic>(i))
continue;
const IntrinsicInst *II = dyn_cast<IntrinsicInst>(i);
if (!II)
break;
if (II->getIntrinsicID() != Intrinsic::lifetime_start &&
II->getIntrinsicID() != Intrinsic::lifetime_end)
break;
}
return &*i;
}
void BasicBlock::dropAllReferences() {
for(iterator I = begin(), E = end(); I != E; ++I)
I->dropAllReferences();