diff options
author | Nate Begeman <natebegeman@mac.com> | 2005-04-05 04:32:16 +0000 |
---|---|---|
committer | Nate Begeman <natebegeman@mac.com> | 2005-04-05 04:32:16 +0000 |
commit | c8c5c8f0fad4d1bd54ccd372255c9802287625f2 (patch) | |
tree | 4d0fa9fe9b896b9fc7a36cd0f9923e549b08c155 /lib/Target/PowerPC/PPCISelPattern.cpp | |
parent | 439b444cad649fb24d59fb02685e525afee82f71 (diff) |
Back out the previous change to SelectBranchCC, since there are cases it
could miscompile. A correct solution will be found in the near future.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21095 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/PowerPC/PPCISelPattern.cpp')
-rw-r--r-- | lib/Target/PowerPC/PPCISelPattern.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/Target/PowerPC/PPCISelPattern.cpp b/lib/Target/PowerPC/PPCISelPattern.cpp index f480ed21eb..dd1a4f331b 100644 --- a/lib/Target/PowerPC/PPCISelPattern.cpp +++ b/lib/Target/PowerPC/PPCISelPattern.cpp @@ -667,13 +667,20 @@ void ISel::SelectBranchCC(SDOperand N) // Get the MBB we will fall through to so that we can hand it off to the // branch selection pass as an argument to the PPC::COND_BRANCH pseudo op. - ilist<MachineBasicBlock>::iterator It = BB; - MachineBasicBlock *Fallthrough = ++It; + //ilist<MachineBasicBlock>::iterator It = BB; + //MachineBasicBlock *Fallthrough = ++It; Select(N.getOperand(0)); //chain unsigned Opc = SelectSetCR0(N.getOperand(1)); - BuildMI(BB, PPC::COND_BRANCH, 4).addReg(PPC::CR0).addImm(Opc) - .addMBB(Dest).addMBB(Fallthrough); + // FIXME: Use this once we have something approximating two-way branches + // We cannot currently use this in case the ISel hands us something like + // BRcc MBBx + // BR MBBy + // since the fallthrough basic block for the conditional branch does not start + // with the unconditional branch (it is skipped over). + //BuildMI(BB, PPC::COND_BRANCH, 4).addReg(PPC::CR0).addImm(Opc) + // .addMBB(Dest).addMBB(Fallthrough); + BuildMI(BB, Opc, 2).addReg(PPC::CR0).addMBB(Dest); return; } |