diff options
Diffstat (limited to 'contrib/llvm/lib/IR/BasicBlock.cpp')
-rw-r--r-- | contrib/llvm/lib/IR/BasicBlock.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/contrib/llvm/lib/IR/BasicBlock.cpp b/contrib/llvm/lib/IR/BasicBlock.cpp index 938c40182b92..7c3e5862d1cd 100644 --- a/contrib/llvm/lib/IR/BasicBlock.cpp +++ b/contrib/llvm/lib/IR/BasicBlock.cpp @@ -90,6 +90,24 @@ void BasicBlock::setParent(Function *parent) { InstList.setSymTabObject(&Parent, parent); } +iterator_range<filter_iterator<BasicBlock::const_iterator, + std::function<bool(const Instruction &)>>> +BasicBlock::instructionsWithoutDebug() const { + std::function<bool(const Instruction &)> Fn = [](const Instruction &I) { + return !isa<DbgInfoIntrinsic>(I); + }; + return make_filter_range(*this, Fn); +} + +iterator_range<filter_iterator<BasicBlock::iterator, + std::function<bool(Instruction &)>>> +BasicBlock::instructionsWithoutDebug() { + std::function<bool(Instruction &)> Fn = [](Instruction &I) { + return !isa<DbgInfoIntrinsic>(I); + }; + return make_filter_range(*this, Fn); +} + void BasicBlock::removeFromParent() { getParent()->getBasicBlockList().remove(getIterator()); } @@ -461,3 +479,9 @@ Optional<uint64_t> BasicBlock::getIrrLoopHeaderWeight() const { } return Optional<uint64_t>(); } + +BasicBlock::iterator llvm::skipDebugIntrinsics(BasicBlock::iterator It) { + while (isa<DbgInfoIntrinsic>(It)) + ++It; + return It; +} |