aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/PowerPC/PPCISelPattern.cpp
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 /lib/Target/PowerPC/PPCISelPattern.cpp
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
Diffstat (limited to 'lib/Target/PowerPC/PPCISelPattern.cpp')
-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);