From: Chris Lattner Date: Fri, 1 Apr 2005 07:10:02 +0000 (+0000) Subject: Move the selection of the arms of the select operation up to the conditional X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=3071019026ee62899f2535d313b35c59d37ae218;p=oota-llvm.git Move the selection of the arms of the select operation up to the conditional part to make sure we get the side effects and to avoid confusing the CFG. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20977 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/PowerPC/PPCISelPattern.cpp b/lib/Target/PowerPC/PPCISelPattern.cpp index 9b70f3d23a1..26b1955b3a2 100644 --- a/lib/Target/PowerPC/PPCISelPattern.cpp +++ b/lib/Target/PowerPC/PPCISelPattern.cpp @@ -1365,6 +1365,9 @@ unsigned ISel::SelectExpr(SDOperand N) { case ISD::SELECT: { Opc = SelectSetCR0(N.getOperand(0)); + unsigned TrueValue = SelectExpr(N.getOperand(1)); //Use if TRUE + unsigned FalseValue = SelectExpr(N.getOperand(2)); //Use if FALSE + // Create an iterator with which to insert the MBB for copying the false // value and the MBB to hold the PHI instruction for this SetCC. MachineBasicBlock *thisMBB = BB; @@ -1380,7 +1383,6 @@ unsigned ISel::SelectExpr(SDOperand N) { // fallthrough --> copy0MBB MachineBasicBlock *copy0MBB = new MachineBasicBlock(LLVM_BB); MachineBasicBlock *sinkMBB = new MachineBasicBlock(LLVM_BB); - unsigned TrueValue = SelectExpr(N.getOperand(1)); //Use if TRUE BuildMI(BB, Opc, 2).addReg(PPC::CR0).addMBB(sinkMBB); MachineFunction *F = BB->getParent(); F->getBasicBlockList().insert(It, copy0MBB); @@ -1393,7 +1395,6 @@ unsigned ISel::SelectExpr(SDOperand N) { // %FalseValue = ... // # fallthrough to sinkMBB BB = copy0MBB; - unsigned FalseValue = SelectExpr(N.getOperand(2)); //Use if FALSE // Update machine-CFG edges BB->addSuccessor(sinkMBB);