diff options
Diffstat (limited to 'llvm/lib/IR')
-rw-r--r-- | llvm/lib/IR/BasicBlock.cpp | 6 | ||||
-rw-r--r-- | llvm/lib/IR/Instruction.cpp | 8 |
2 files changed, 10 insertions, 4 deletions
diff --git a/llvm/lib/IR/BasicBlock.cpp b/llvm/lib/IR/BasicBlock.cpp index e9eb686c1e1..375924360dd 100644 --- a/llvm/lib/IR/BasicBlock.cpp +++ b/llvm/lib/IR/BasicBlock.cpp @@ -206,10 +206,8 @@ const Instruction* BasicBlock::getFirstNonPHIOrDbgOrLifetime() const { if (isa<PHINode>(I) || isa<DbgInfoIntrinsic>(I)) continue; - if (auto *II = dyn_cast<IntrinsicInst>(&I)) - if (II->getIntrinsicID() == Intrinsic::lifetime_start || - II->getIntrinsicID() == Intrinsic::lifetime_end) - continue; + if (I.isLifetimeStartOrEnd()) + continue; return &I; } diff --git a/llvm/lib/IR/Instruction.cpp b/llvm/lib/IR/Instruction.cpp index f077957969f..d861b528859 100644 --- a/llvm/lib/IR/Instruction.cpp +++ b/llvm/lib/IR/Instruction.cpp @@ -598,6 +598,14 @@ bool Instruction::isSafeToRemove() const { !this->isTerminator(); } +bool Instruction::isLifetimeStartOrEnd() const { + auto II = dyn_cast<IntrinsicInst>(this); + if (!II) + return false; + Intrinsic::ID ID = II->getIntrinsicID(); + return ID == Intrinsic::lifetime_start || ID == Intrinsic::lifetime_end; +} + const Instruction *Instruction::getNextNonDebugInstruction() const { for (const Instruction *I = getNextNode(); I; I = I->getNextNode()) if (!isa<DbgInfoIntrinsic>(I)) |