Skip debug info when looking for existing EH calls at the

beginning of a block.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100230 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dale Johannesen
2010-04-02 21:49:27 +00:00
parent a144c3f34d
commit 7249ef0455
3 changed files with 19 additions and 2 deletions

View File

@@ -14,6 +14,7 @@
#include "llvm/BasicBlock.h"
#include "llvm/Constants.h"
#include "llvm/Instructions.h"
#include "llvm/IntrinsicInst.h"
#include "llvm/LLVMContext.h"
#include "llvm/Type.h"
#include "llvm/ADT/STLExtras.h"
@@ -136,6 +137,16 @@ Instruction* BasicBlock::getFirstNonPHI() {
return &*i;
}
Instruction* BasicBlock::getFirstNonPHIOrDbg() {
BasicBlock::iterator i = begin();
// 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.
while (isa<PHINode>(i) || isa<DbgInfoIntrinsic>(i)) ++i;
return &*i;
}
void BasicBlock::dropAllReferences() {
for(iterator I = begin(), E = end(); I != E; ++I)
I->dropAllReferences();