diff options
| -rw-r--r-- | llvm/lib/CodeGen/MachineBlockPlacement.cpp | 25 | ||||
| -rw-r--r-- | llvm/test/CodeGen/PowerPC/block-placement-1.mir | 10 | ||||
| -rw-r--r-- | llvm/test/CodeGen/PowerPC/block-placement.mir | 12 | 
3 files changed, 16 insertions, 31 deletions
diff --git a/llvm/lib/CodeGen/MachineBlockPlacement.cpp b/llvm/lib/CodeGen/MachineBlockPlacement.cpp index a469f893ce1..639b588766a 100644 --- a/llvm/lib/CodeGen/MachineBlockPlacement.cpp +++ b/llvm/lib/CodeGen/MachineBlockPlacement.cpp @@ -2730,31 +2730,6 @@ void MachineBlockPlacement::optimizeBranches() {          TII->removeBranch(*ChainBB);          TII->insertBranch(*ChainBB, FBB, TBB, Cond, dl);          ChainBB->updateTerminator(); -      } else if (Cond.empty() && TBB && ChainBB != TBB &&  -                 !TBB->canFallThrough()) { -        // When ChainBB is unconditional branch to the TBB, and TBB has no  -        // fallthrough predecessor and fallthrough successor, try to merge -        // ChainBB and TBB. This is legal under the one of following conditions: -        // 1. ChainBB is empty except for an unconditional branch. -        // 2. TBB has only one predecessor. -        MachineFunction::iterator I(TBB); -        if (((TBB == &*F->begin()) || !std::prev(I)->canFallThrough()) && -             (TailDup.isSimpleBB(ChainBB) || (TBB->pred_size() == 1))) { -          TII->removeBranch(*ChainBB); -          ChainBB->removeSuccessor(TBB); - -          // Update the CFG. -          for (MachineBasicBlock::pred_iterator PI = TBB->pred_begin(), -               PE = TBB->pred_end(); PI != PE; PI++)  -            (*PI)->ReplaceUsesOfBlockWith(TBB, ChainBB); - -          for (MachineBasicBlock *Succ : TBB->successors()) -            ChainBB->addSuccessor(Succ, MBPI->getEdgeProbability(TBB, Succ)); - -          // Move all the instructions of TBB to ChainBB. -          ChainBB->splice(ChainBB->end(), TBB, TBB->begin(), TBB->end()); -          F->remove(TBB); -        }        }      }    } diff --git a/llvm/test/CodeGen/PowerPC/block-placement-1.mir b/llvm/test/CodeGen/PowerPC/block-placement-1.mir index fdd57cd4061..01967e46da9 100644 --- a/llvm/test/CodeGen/PowerPC/block-placement-1.mir +++ b/llvm/test/CodeGen/PowerPC/block-placement-1.mir @@ -299,8 +299,14 @@ body:             |    bb.11.unreachable:    ; CHECK:      bb.1.for.body: -  ; CHECK-NEXT:   successors: %bb.3(0x00000800) +  ; CHECK:        successors: %bb.2(0x7ffff800), %bb.3(0x00000800) +  ; CHECK:        B %bb.2    ; CHECK:      bb.4.catch4: -  ; CHECK-NEXT:   %bb.6(0x00000800) +  ; CHECK:        successors: %bb.11(0x7ffff800), %bb.6(0x00000800) +  ; CHECK:        B %bb.11 + +  ; CHECK:      bb.2..noexc: + +  ; CHECK:      bb.11.unreachable:   ... diff --git a/llvm/test/CodeGen/PowerPC/block-placement.mir b/llvm/test/CodeGen/PowerPC/block-placement.mir index e413e3db2d5..9406e13b354 100644 --- a/llvm/test/CodeGen/PowerPC/block-placement.mir +++ b/llvm/test/CodeGen/PowerPC/block-placement.mir @@ -209,10 +209,14 @@ body:             |      BLR8 implicit $lr8, implicit $rm, implicit killed $x3    ; CHECK:      bb.5.if.else.i: -  ; CHECK-NEXT:   renamable $x3 = LI8 1 -  ; CHECK-NEXT:   BLR8 implicit $lr8, implicit $rm, implicit killed $x3 +  ; CHECK:        successors: %bb.11(0x80000000) +  ; CHECK:        B %bb.11    ; CHECK:      bb.8.while.body.i (align 4): -  ; CHECK:        successors: %bb.5(0x04000000), %bb.9(0x7c000000) -  ; CHECK:        BCC 76, killed renamable $cr0, %bb.5 +  ; CHECK:        successors: %bb.11(0x04000000), %bb.9(0x7c000000) +  ; CHECK:        BCC 76, killed renamable $cr0, %bb.11 + +  ; CHECK:      bb.11: +  ; CHECK:        renamable $x3 = LI8 1 +  ; CHECK-NEXT:   BLR8 implicit $lr8, implicit $rm, implicit killed $x3  ...  | 

