Lines Matching refs:BasicBlock
60 class BasicBlock final : public Value, // Basic blocks are data objects also
61 public ilist_node_with_parent<BasicBlock, Function> {
64 ilist_parent<BasicBlock>>;
71 friend class SymbolTableListTraits<BasicBlock>;
154 explicit BasicBlock(LLVMContext &C, const Twine &Name = "",
156 BasicBlock *InsertBefore = nullptr);
159 BasicBlock(const BasicBlock &) = delete;
160 BasicBlock &operator=(const BasicBlock &) = delete;
161 ~BasicBlock();
174 friend BasicBlock::iterator Instruction::eraseFromParent();
175 friend BasicBlock::iterator Instruction::insertInto(BasicBlock *BB,
176 BasicBlock::iterator It);
178 llvm::Instruction, ilist_iterator_bits<true>, ilist_parent<BasicBlock>>;
179 friend class llvm::ilist_node_with_parent<llvm::Instruction, llvm::BasicBlock,
181 ilist_parent<BasicBlock>>;
185 friend void Instruction::insertBefore(BasicBlock::iterator InsertPos);
187 friend void Instruction::insertBefore(BasicBlock &BB,
189 friend void Instruction::moveBeforeImpl(BasicBlock &BB,
202 static BasicBlock *Create(LLVMContext &Context, const Twine &Name = "",
204 BasicBlock *InsertBefore = nullptr) {
205 return new BasicBlock(Context, Name, Parent, InsertBefore);
219 static_cast<const BasicBlock *>(this)->getModule()); in getModule()
236 static_cast<const BasicBlock *>(this)->getTerminator()); in getTerminator()
245 static_cast<const BasicBlock *>(this)->getTerminatingDeoptimizeCall()); in getTerminatingDeoptimizeCall()
254 static_cast<const BasicBlock *>(this)->getPostdominatingDeoptimizeCall()); in getPostdominatingDeoptimizeCall()
263 static_cast<const BasicBlock *>(this)->getTerminatingMustTailCall()); in getTerminatingMustTailCall()
275 static_cast<const BasicBlock *>(this)->getFirstNonPHI()); in getFirstNonPHI()
282 BasicBlock::iterator It = in getFirstNonPHIIt()
283 static_cast<const BasicBlock *>(this)->getFirstNonPHIIt().getNonConst(); in getFirstNonPHIIt()
294 static_cast<const BasicBlock *>(this)->getFirstNonPHIOrDbg(
305 static_cast<const BasicBlock *>(this)->getFirstNonPHIOrDbgOrLifetime(
315 return static_cast<const BasicBlock *>(this) in getFirstInsertionPt()
323 return static_cast<const BasicBlock *>(this) in getFirstNonPHIOrDbgOrAlloca()
334 static_cast<const BasicBlock*>(this)->getFirstMayFaultInst()); in getFirstMayFaultInst()
340 iterator_range<filter_iterator<BasicBlock::const_iterator,
348 filter_iterator<BasicBlock::iterator, std::function<bool(Instruction &)>>>
352 filter_iterator<BasicBlock::const_iterator,
362 SymbolTableList<BasicBlock>::iterator eraseFromParent();
366 inline void moveBefore(BasicBlock *MovePos) { in moveBefore()
369 void moveBefore(SymbolTableList<BasicBlock>::iterator MovePos);
373 void moveAfter(BasicBlock *MovePos);
381 void insertInto(Function *Parent, BasicBlock *InsertBefore = nullptr);
385 const BasicBlock *getSinglePredecessor() const;
386 BasicBlock *getSinglePredecessor() { in getSinglePredecessor()
387 return const_cast<BasicBlock *>( in getSinglePredecessor()
388 static_cast<const BasicBlock *>(this)->getSinglePredecessor()); in getSinglePredecessor()
397 const BasicBlock *getUniquePredecessor() const;
398 BasicBlock *getUniquePredecessor() { in getUniquePredecessor()
399 return const_cast<BasicBlock *>( in getUniquePredecessor()
400 static_cast<const BasicBlock *>(this)->getUniquePredecessor()); in getUniquePredecessor()
413 const BasicBlock *getSingleSuccessor() const;
414 BasicBlock *getSingleSuccessor() { in getSingleSuccessor()
415 return const_cast<BasicBlock *>( in getSingleSuccessor()
416 static_cast<const BasicBlock *>(this)->getSingleSuccessor()); in getSingleSuccessor()
423 const BasicBlock *getUniqueSuccessor() const;
424 BasicBlock *getUniqueSuccessor() { in getUniqueSuccessor()
425 return const_cast<BasicBlock *>( in getUniqueSuccessor()
426 static_cast<const BasicBlock *>(this)->getUniqueSuccessor()); in getUniqueSuccessor()
471 friend BasicBlock; variable
502 phi_iterator_impl<const PHINode, BasicBlock::const_iterator>;
508 return const_cast<BasicBlock *>(this)->phis(); in phis()
522 static InstListType BasicBlock::*getSublistAccess(Instruction *) { in getSublistAccess()
523 return &BasicBlock::InstList; in getSublistAccess()
529 void spliceDebugInfoEmptyBlock(BasicBlock::iterator ToIt, BasicBlock *FromBB,
530 BasicBlock::iterator FromBeginIt,
531 BasicBlock::iterator FromEndIt);
537 void spliceDebugInfo(BasicBlock::iterator ToIt, BasicBlock *FromBB,
538 BasicBlock::iterator FromBeginIt,
539 BasicBlock::iterator FromEndIt);
540 void spliceDebugInfoImpl(BasicBlock::iterator ToIt, BasicBlock *FromBB,
541 BasicBlock::iterator FromBeginIt,
542 BasicBlock::iterator FromEndIt);
569 void removePredecessor(BasicBlock *Pred, bool KeepOneInputPHIs = false);
591 BasicBlock *splitBasicBlock(iterator I, const Twine &BBName = "",
593 BasicBlock *splitBasicBlock(Instruction *I, const Twine &BBName = "",
615 BasicBlock *splitBasicBlockBefore(iterator I, const Twine &BBName = "");
616 BasicBlock *splitBasicBlockBefore(Instruction *I, const Twine &BBName = "") {
621 void splice(BasicBlock::iterator ToIt, BasicBlock *FromBB) { in splice()
627 void splice(BasicBlock::iterator ToIt, BasicBlock *FromBB, in splice()
628 BasicBlock::iterator FromIt) { in splice()
638 void splice(BasicBlock::iterator ToIt, BasicBlock *FromBB,
639 BasicBlock::iterator FromBeginIt,
640 BasicBlock::iterator FromEndIt);
644 BasicBlock::iterator erase(BasicBlock::iterator FromIt, BasicBlock::iterator ToIt);
654 void replacePhiUsesWith(BasicBlock *Old, BasicBlock *New);
658 void replaceSuccessorsPhiUsesWith(BasicBlock *Old, BasicBlock *New);
662 void replaceSuccessorsPhiUsesWith(BasicBlock *New);
677 static_cast<const BasicBlock *>(this)->getLandingPadInst()); in getLandingPadInst()
774 DEFINE_SIMPLE_CONVERSION_FUNCTIONS(BasicBlock, LLVMBasicBlockRef)
778 BasicBlock::iterator skipDebugIntrinsics(BasicBlock::iterator It);
783 inline void BasicBlock::validateInstrOrdering() const {} in validateInstrOrdering()
789 template <> struct DenseMapInfo<BasicBlock::iterator> {
790 static inline BasicBlock::iterator getEmptyKey() {
791 return BasicBlock::iterator(nullptr);
794 static inline BasicBlock::iterator getTombstoneKey() {
795 BasicBlock::iterator It(nullptr);
800 static unsigned getHashValue(const BasicBlock::iterator &It) {
806 static bool isEqual(const BasicBlock::iterator &LHS,
807 const BasicBlock::iterator &RHS) {