[llvm-commits] [llvm] r138887 - in /llvm/trunk/lib/CodeGen/SelectionDAG: LegalizeFloatTypes.cpp LegalizeIntegerTypes.cpp LegalizeTypes.cpp LegalizeTypes.h

Eli Friedman eli.friedman at gmail.com
Wed Aug 31 13:13:26 PDT 2011


Author: efriedma
Date: Wed Aug 31 15:13:26 2011
New Revision: 138887

URL: http://llvm.org/viewvc/llvm-project?rev=138887&view=rev
Log:
Misc cleanup; addresses Duncan's comments on r138877.


Modified:
    llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
    llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
    llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp
    llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h

Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp?rev=138887&r1=138886&r2=138887&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp Wed Aug 31 15:13:26 2011
@@ -110,9 +110,7 @@
 
 SDValue DAGTypeLegalizer::SoftenFloatRes_MERGE_VALUES(SDNode *N) {
   SDValue Op = DecomposeMERGE_VALUES(N);
-  return Op.getValueType().isVector() ?
-      BitConvertVectorToIntegerVector(Op) :
-      BitConvertToInteger(Op);
+  return BitConvertToInteger(Op);
 }
 
 SDValue DAGTypeLegalizer::SoftenFloatRes_BUILD_PAIR(SDNode *N) {

Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp?rev=138887&r1=138886&r2=138887&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp Wed Aug 31 15:13:26 2011
@@ -139,8 +139,6 @@
 
 SDValue DAGTypeLegalizer::PromoteIntRes_MERGE_VALUES(SDNode *N) {
   SDValue Op = DecomposeMERGE_VALUES(N);
-  assert(Op.getValueType().isInteger()
-      && "Must decompose to an integer type!");
   return GetPromotedInteger(Op);
 }
 
@@ -1556,11 +1554,10 @@
   // use the new one.
   ReplaceValueWith(SDValue(N, 1), Hi.getValue(1));
 }
+
 void DAGTypeLegalizer::ExpandIntRes_MERGE_VALUES(SDNode *N, 
-                                          SDValue &Lo, SDValue &Hi) {
+                                                 SDValue &Lo, SDValue &Hi) {
   SDValue Res = DecomposeMERGE_VALUES(N);
-  assert(Res.getValueType().isInteger()
-      && "Cannot split a non-integer value.");
   SplitInteger(Res, Lo, Hi);
 }
 

Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp?rev=138887&r1=138886&r2=138887&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp Wed Aug 31 15:13:26 2011
@@ -948,21 +948,22 @@
 
 SDValue DAGTypeLegalizer::DecomposeMERGE_VALUES(SDNode *N) {
   unsigned i;
-   // A MERGE_VALUES node can produce any number of values.
-   // We know that the first illegal type needs to be handled.
+  // A MERGE_VALUES node can produce any number of values.
+  // Replace the results other than the first illegal one with the
+  // corresponding input operands.
   for (i = 0; isTypeLegal(N->getValueType(i)); ++i)
     ReplaceValueWith(SDValue(N, i), SDValue(N->getOperand(i)));
 
-  // The first illegal result must be the one that needs to be handled.
-  SDValue BadValue = N->getOperand(i);
+  // The first illegal result is the one which needs to be handled;
+  // type legalization legalizes values in order.
+  SDValue IllegalValue = N->getOperand(i);
 
-  // Legalize the rest of the results into the input operands whether they
-  // are legal or not.
+  // Continue replacing results.
   unsigned e = N->getNumValues();
   for (++i; i != e; ++i) 
     ReplaceValueWith(SDValue(N, i), SDValue(N->getOperand(i)));
 
-  return BadValue;
+  return IllegalValue;
 }
 
 /// GetSplitDestVTs - Compute the VTs needed for the low/hi parts of a type

Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h?rev=138887&r1=138886&r2=138887&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h Wed Aug 31 15:13:26 2011
@@ -149,10 +149,9 @@
   bool CustomLowerNode(SDNode *N, EVT VT, bool LegalizeResult);
   bool CustomWidenLowerNode(SDNode *N, EVT VT);
 
-  // DecomposeMERGE_VALUES  takes a SDNode and returns the first
-  // illegal operand that needs to be modified. 
-  // All other nodes are legalized, whether they are legal or not.
-  // The resulting SDValue needs to be modified to make it legal.
+  // DecomposeMERGE_VALUES takes a SDNode and returns the first
+  // illegal value. All other results are replaced with the
+  // corresponding input operand.
   SDValue DecomposeMERGE_VALUES(SDNode *N);
 
   SDValue GetVectorElementPointer(SDValue VecPtr, EVT EltVT, SDValue Index);
@@ -162,9 +161,9 @@
                       const SDValue *Ops, unsigned NumOps, bool isSigned,
                       DebugLoc dl);
   
-	std::pair<SDValue, SDValue> ExpandChainLibCall(RTLIB::Libcall LC,
-									                               SDNode *Node, bool isSigned);
-	std::pair<SDValue, SDValue> ExpandAtomic(SDNode *Node);
+  std::pair<SDValue, SDValue> ExpandChainLibCall(RTLIB::Libcall LC,
+                                                 SDNode *Node, bool isSigned);
+  std::pair<SDValue, SDValue> ExpandAtomic(SDNode *Node);
 
   SDValue PromoteTargetBoolean(SDValue Bool, EVT VT);
   void ReplaceValueWith(SDValue From, SDValue To);





More information about the llvm-commits mailing list