[llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp

Andrew Lenharth alenhar2 at cs.uiuc.edu
Tue Jul 5 12:52:50 PDT 2005



Changes in directory llvm/lib/CodeGen/SelectionDAG:

LegalizeDAG.cpp updated: 1.134 -> 1.135
---
Log message:

2 fixes:

1: Legalize operand in UINT_TO_FP expanision

2: SRA x, const i8 was not promoting the constant to shift amount type.



---
Diffs of the changes:  (+13 -4)

 LegalizeDAG.cpp |   17 +++++++++++++----
 1 files changed, 13 insertions(+), 4 deletions(-)


Index: llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
diff -u llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.134 llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.135
--- llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.134	Sat Jul  2 15:58:53 2005
+++ llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp	Tue Jul  5 14:52:39 2005
@@ -1100,7 +1100,15 @@
   case ISD::SRL:
   case ISD::SRA:
     Tmp1 = LegalizeOp(Node->getOperand(0));   // LHS
-    Tmp2 = LegalizeOp(Node->getOperand(1));   // RHS
+    switch (getTypeAction(Node->getOperand(1).getValueType())) {
+    case Expand: assert(0 && "Not possible");
+    case Legal:
+      Tmp2 = LegalizeOp(Node->getOperand(1)); // Legalize the RHS.
+      break;
+    case Promote:
+      Tmp2 = PromoteOp(Node->getOperand(1));  // Promote the RHS.
+      break;
+    }
     if (Tmp1 != Node->getOperand(0) ||
         Tmp2 != Node->getOperand(1))
       Result = DAG.getNode(Node->getOpcode(), Node->getValueType(0), Tmp1,Tmp2);
@@ -1327,13 +1335,14 @@
           TLI.getOperationAction(Node->getOpcode(), 
                                  Node->getOperand(0).getValueType()) 
           == TargetLowering::Expand) {
+        SDOperand Op0 = LegalizeOp(Node->getOperand(0));
         Tmp1 = DAG.getNode(ISD::SINT_TO_FP, Node->getValueType(0), 
-                           Node->getOperand(0));
+                           Op0);
         
         SDOperand SignSet = DAG.getSetCC(ISD::SETLT, TLI.getSetCCResultTy(), 
-                                         Node->getOperand(0),
+                                         Op0,
                                          DAG.getConstant(0, 
-                                         Node->getOperand(0).getValueType()));
+                                         Op0.getValueType()));
         SDOperand Zero = getIntPtrConstant(0), Four = getIntPtrConstant(4);
         SDOperand CstOffset = DAG.getNode(ISD::SELECT, Zero.getValueType(),
                                           SignSet, Four, Zero);






More information about the llvm-commits mailing list