[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPC32ISelDAGToDAG.cpp

Chris Lattner lattner at cs.uiuc.edu
Mon Aug 29 15:23:08 PDT 2005



Changes in directory llvm/lib/Target/PowerPC:

PPC32ISelDAGToDAG.cpp updated: 1.51 -> 1.52
---
Log message:

Fix a dumb bug of mine where we were mishandling the PPC ABI (undef handling).
This fixes voronoi and bh in Olden, allowing all of olden to pass!


---
Diffs of the changes:  (+16 -15)

 PPC32ISelDAGToDAG.cpp |   31 ++++++++++++++++---------------
 1 files changed, 16 insertions(+), 15 deletions(-)


Index: llvm/lib/Target/PowerPC/PPC32ISelDAGToDAG.cpp
diff -u llvm/lib/Target/PowerPC/PPC32ISelDAGToDAG.cpp:1.51 llvm/lib/Target/PowerPC/PPC32ISelDAGToDAG.cpp:1.52
--- llvm/lib/Target/PowerPC/PPC32ISelDAGToDAG.cpp:1.51	Sun Aug 28 20:07:02 2005
+++ llvm/lib/Target/PowerPC/PPC32ISelDAGToDAG.cpp	Mon Aug 29 17:22:57 2005
@@ -1479,27 +1479,28 @@
       PPC::F8, PPC::F9, PPC::F10, PPC::F11, PPC::F12, PPC::F13
     };
     
-    for (unsigned i = 2, e = N->getNumOperands(); i != e; ++i)
+    for (unsigned i = 2, e = N->getNumOperands(); i != e; ++i) {
+      unsigned DestReg = 0;
+      MVT::ValueType RegTy;
+      if (N->getOperand(i).getValueType() == MVT::i32) {
+        assert(GPR_idx < 8 && "Too many int args");
+        DestReg = GPR[GPR_idx++];
+        RegTy = MVT::i32;
+      } else {
+        assert(MVT::isFloatingPoint(N->getOperand(i).getValueType()) &&
+               "Unpromoted integer arg?");
+        assert(FPR_idx < 13 && "Too many fp args");
+        DestReg = FPR[FPR_idx++];
+        RegTy = MVT::f64;   // Even if this is really f32!
+      }
+
       if (N->getOperand(i).getOpcode() != ISD::UNDEF) {
-        unsigned DestReg = 0;
-        MVT::ValueType RegTy;
-        if (N->getOperand(i).getValueType() == MVT::i32) {
-          assert(GPR_idx < 8 && "Too many int args");
-          DestReg = GPR[GPR_idx++];
-          RegTy = MVT::i32;
-        } else {
-          assert(MVT::isFloatingPoint(N->getOperand(i).getValueType()) &&
-                 "Unpromoted integer arg?");
-          assert(FPR_idx < 13 && "Too many fp args");
-          DestReg = FPR[FPR_idx++];
-          RegTy = MVT::f64;   // Even if this is really f32!
-        }
-        
         SDOperand Reg = CurDAG->getRegister(DestReg, RegTy);
         Chain = CurDAG->getNode(ISD::CopyToReg, MVT::Other, Chain, Reg,
                                 Select(N->getOperand(i)));
         CallOperands.push_back(Reg);
       }
+    }
 
     // Finally, once everything is in registers to pass to the call, emit the
     // call itself.






More information about the llvm-commits mailing list