diff options
| author | Chris Lattner <sabre@nondot.org> | 2005-08-21 19:03:28 +0000 | 
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2005-08-21 19:03:28 +0000 | 
| commit | 519acbfb76555f191c6e935fb5f4c60b4b77ec25 (patch) | |
| tree | ca2bf15e22e7d49642d422ea725746c4a3b9d63c /llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp | |
| parent | 2a1823d178e35809aee430e592afd1151ca98908 (diff) | |
| download | bcm5719-llvm-519acbfb76555f191c6e935fb5f4c60b4b77ec25.tar.gz bcm5719-llvm-519acbfb76555f191c6e935fb5f4c60b4b77ec25.zip | |
Simplify the logic for BRTWOWAY_CC handling.  The isel code already
simplifies BRTWOWAY into BR if one of the results is a fall-through.
Unless I'm missing something, there is no reason to duplicate this
in the target-specific code.
llvm-svn: 22952
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp')
| -rw-r--r-- | llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp | 23 | 
1 files changed, 7 insertions, 16 deletions
| diff --git a/llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp b/llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp index 4362a1d26cf..d70d0f20edf 100644 --- a/llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp +++ b/llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp @@ -707,10 +707,6 @@ void ISel::SelectBranchCC(SDOperand N)    unsigned CCReg = SelectCC(N.getOperand(2), N.getOperand(3), CC);    unsigned Opc = getBCCForSetCC(CC); -  // Iterate to the next basic block -  ilist<MachineBasicBlock>::iterator It = BB; -  ++It; -    // If this is a two way branch, then grab the fallthrough basic block argument    // and build a PowerPC branch pseudo-op, suitable for long branch conversion    // if necessary by the branch selection pass.  Otherwise, emit a standard @@ -718,19 +714,14 @@ void ISel::SelectBranchCC(SDOperand N)    if (N.getOpcode() == ISD::BRTWOWAY_CC) {      MachineBasicBlock *Fallthrough =        cast<BasicBlockSDNode>(N.getOperand(5))->getBasicBlock(); -    if (Dest != It) { -      BuildMI(BB, PPC::COND_BRANCH, 4).addReg(CCReg).addImm(Opc) -        .addMBB(Dest).addMBB(Fallthrough); -      if (Fallthrough != It) -        BuildMI(BB, PPC::B, 1).addMBB(Fallthrough); -    } else { -      if (Fallthrough != It) { -        Opc = PPC32InstrInfo::invertPPCBranchOpcode(Opc); -        BuildMI(BB, PPC::COND_BRANCH, 4).addReg(CCReg).addImm(Opc) -          .addMBB(Fallthrough).addMBB(Dest); -      } -    } +    BuildMI(BB, PPC::COND_BRANCH, 4).addReg(CCReg).addImm(Opc) +      .addMBB(Dest).addMBB(Fallthrough); +    BuildMI(BB, PPC::B, 1).addMBB(Fallthrough);    } else { +    // Iterate to the next basic block +    ilist<MachineBasicBlock>::iterator It = BB; +    ++It; +      // If the fallthrough path is off the end of the function, which would be      // undefined behavior, set it to be the same as the current block because      // we have nothing better to set it to, and leaving it alone will cause the | 

