• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/contrib/llvm-project/llvm/lib/Target/PowerPC/

Lines Matching refs:BranchBlock

138     MachineBasicBlock *BranchBlock;       // Block containing the branch
205 : BranchBlock(nullptr), BranchTargetBlock(nullptr),
209 BranchBlock = nullptr;
236 << Cand.BranchBlock->getNumber() << " can be coalesced:");
239 if (TII->analyzeBranch(*Cand.BranchBlock, Cand.BranchTargetBlock, FalseMBB,
245 for (auto &I : Cand.BranchBlock->terminators()) {
270 if (Cand.BranchBlock->isEHPad() || Cand.BranchBlock->hasEHPadSuccessor()) {
276 // FalseMBB is null, and BranchTargetBlock is a successor to BranchBlock)
278 !Cand.BranchBlock->isSuccessor(Cand.BranchTargetBlock)) {
284 if (Cand.BranchBlock->succ_size() != 2) {
290 assert(Cand.BranchBlock->canFallThrough() &&
294 // BranchBlock and that BranchTargetBlock is a successor to BranchBlock.
297 (*Cand.BranchBlock->succ_begin() == Cand.BranchTargetBlock)
298 ? *Cand.BranchBlock->succ_rbegin()
299 : *Cand.BranchBlock->succ_begin();
483 /// \return true if all instructions in SourceRegion.BranchBlock can be merged
490 if (TargetRegion.BranchTargetBlock != SourceRegion.BranchBlock)
492 else if (!MDT->dominates(TargetRegion.BranchBlock, SourceRegion.BranchBlock))
494 else if (!MPDT->dominates(SourceRegion.BranchBlock, TargetRegion.BranchBlock))
507 /// 2. Move to the end of the TargetRegion.BranchBlock.
509 /// TargetRegion.BranchTargetBlock (also SourceRegion.BranchBlock).
516 /// can be moved up, to the end of the TargetRegion.BranchBlock (immediately
526 /// \return true if all instructions in SourceRegion.BranchBlock can be merged
537 I = SourceRegion.BranchBlock->instr_begin(),
538 E = SourceRegion.BranchBlock->getFirstNonPHI();
550 if (Use.getParent() == SourceRegion.BranchBlock) {
560 // TargetRegion.BranchBlock (up) or SourceRegion.BranchTargetBlock (down)
562 I = SourceRegion.BranchBlock->getFirstNonPHI(),
563 E = SourceRegion.BranchBlock->end();
570 if (!canMoveToEnd(*I, *TargetRegion.BranchBlock)) {
580 /// Merge the instructions from SourceRegion.BranchBlock,
582 /// TargetRegion.BranchBlock, TargetRegion.BranchTargetBlock and
589 /// A region consists of a BranchBlock, a FallThroughBlock, and a
592 /// BranchBlock.
597 /// | TargetRegion.BranchBlock |
606 /// | SourceRegion.BranchBlock |
620 /// | TargetRegion.BranchBlock |
621 /// | SourceRegion.BranchBlock |
647 // Start the merging process by first handling the BranchBlock.
648 // Move any PHIs in SourceRegion.BranchBlock down to the branch-taken block
649 moveAndUpdatePHIs(SourceRegion.BranchBlock, SourceRegion.BranchTargetBlock);
651 // Move remaining instructions in SourceRegion.BranchBlock into
652 // TargetRegion.BranchBlock
654 SourceRegion.BranchBlock->getFirstNonPHI();
656 SourceRegion.BranchBlock->getFirstTerminator();
660 : TargetRegion.BranchBlock;
665 : TargetRegion.BranchBlock->getFirstTerminator();
667 Source->splice(Target, SourceRegion.BranchBlock, firstInstr, lastInstr);
673 // SourceRegion.BranchBlock to TargetRegion.BranchBlock.
674 SourceRegion.BranchBlock->removeSuccessor(SourceRegion.FallThroughBlock);
675 TargetRegion.BranchBlock->transferSuccessorsAndUpdatePHIs(
676 SourceRegion.BranchBlock);
677 // Update branch in TargetRegion.BranchBlock to jump to
679 // In this case, TargetRegion.BranchTargetBlock == SourceRegion.BranchBlock.
680 TargetRegion.BranchBlock->ReplaceUsesOfBlockWith(
681 SourceRegion.BranchBlock, SourceRegion.BranchTargetBlock);
682 // Remove the branch statement(s) in SourceRegion.BranchBlock
684 SourceRegion.BranchBlock->terminators().begin();
685 while (I != SourceRegion.BranchBlock->terminators().end()) {
701 TargetRegion.FallThroughBlock->removeSuccessor(SourceRegion.BranchBlock);
704 assert(SourceRegion.BranchBlock->empty() &&
706 SourceRegion.BranchBlock->eraseFromParent();
739 Cand1.BranchBlock = &MBB;
745 Cand2.BranchBlock = Cand1.BranchTargetBlock;
752 assert(MPDT->dominates(Cand2.BranchTargetBlock, Cand1.BranchBlock) &&
756 LLVM_DEBUG(dbgs() << "Blocks " << Cand1.BranchBlock->getNumber()
757 << " and " << Cand2.BranchBlock->getNumber()
763 << Cand1.BranchBlock->getNumber() << " and "
764 << Cand2.BranchBlock->getNumber() << "\n");
768 LLVM_DEBUG(dbgs() << "Merging blocks " << Cand1.BranchBlock->getNumber()