aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-04-01 07:10:02 +0000
committerChris Lattner <sabre@nondot.org>2005-04-01 07:10:02 +0000
commit3071019026ee62899f2535d313b35c59d37ae218 (patch)
tree328a9c6f9238f16a945e6e6bd39fec77af08eb4a
parent380ae495996c84f348d12224ea9f4514f6471f59 (diff)
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
-rw-r--r--lib/Target/PowerPC/PPCISelPattern.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/Target/PowerPC/PPCISelPattern.cpp b/lib/Target/PowerPC/PPCISelPattern.cpp
index 9b70f3d23a..26b1955b3a 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);