Fix some typos. Also, the WidenedVectors map
authorDuncan Sands <baldrick@free.fr>
Tue, 13 Jan 2009 14:42:39 +0000 (14:42 +0000)
committerDuncan Sands <baldrick@free.fr>
Tue, 13 Jan 2009 14:42:39 +0000 (14:42 +0000)
was not being cleaned by ExpungeNode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62167 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/LegalizeTypes.cpp
lib/CodeGen/SelectionDAG/LegalizeTypes.h

index 7045d7dd5562226a38fb31679123e58e7c164bde..05bfa34e3a98371884566460747f8ca3ae6c9cb3 100644 (file)
@@ -574,6 +574,12 @@ void DAGTypeLegalizer::ExpungeNode(SDNode *N) {
     RemapValue(I->second);
   }
 
+  for (DenseMap<SDValue, SDValue>::iterator I = WidenedVectors.begin(),
+       E = WidenedVectors.end(); I != E; ++I) {
+    assert(I->first.getNode() != N);
+    RemapValue(I->second);
+  }
+
   for (DenseMap<SDValue, std::pair<SDValue, SDValue> >::iterator
        I = ExpandedIntegers.begin(), E = ExpandedIntegers.end(); I != E; ++I){
     assert(I->first.getNode() != N);
@@ -817,7 +823,7 @@ void DAGTypeLegalizer::SetWidenedVector(SDValue Op, SDValue Result) {
   AnalyzeNewValue(Result);
 
   SDValue &OpEntry = WidenedVectors[Op];
-  assert(OpEntry.getNode() == 0 && "Node is already promoted!");
+  assert(OpEntry.getNode() == 0 && "Node already widened!");
   OpEntry = Result;
 }
 
index 9439d17f02d1916356de3f33315fdf3765d5e24f..c6fbf70a3420e0ecc09da2aa98554d86c2904092 100644 (file)
@@ -65,7 +65,7 @@ private:
     ExpandFloat,     // Split this float type into two of half the size.
     ScalarizeVector, // Replace this one-element vector with its element type.
     SplitVector,     // This vector type should be split into smaller vectors.
-    WidenVector      // This vector type should be widened into larger vectors.
+    WidenVector      // This vector type should be widened into a larger vector.
   };
 
   /// ValueTypeActions - This is a bitvector that contains two bits for each
@@ -73,11 +73,7 @@ private:
   /// enum from TargetLowering.  This can be queried with "getTypeAction(VT)".
   TargetLowering::ValueTypeActionImpl ValueTypeActions;
 
-  /// getTypeAction - Return how we should legalize values of this type, either
-  /// it is already legal, or we need to promote it to a larger integer type, or
-  /// we need to expand it into multiple registers of a smaller integer type, or
-  /// we need to split a vector type into smaller vector types, or we need to
-  /// convert it to a different type of the same size.
+  /// getTypeAction - Return how we should legalize values of this type.
   LegalizeAction getTypeAction(MVT VT) const {
     switch (ValueTypeActions.getTypeAction(VT)) {
     default:
@@ -118,12 +114,14 @@ private:
   }
 
   /// IgnoreNodeResults - Pretend all of this node's results are legal.
+  /// FIXME: Remove once PR2957 is done.
   bool IgnoreNodeResults(SDNode *N) const {
     return N->getOpcode() == ISD::TargetConstant ||
            IgnoredNodesResultsSet.count(N);
   }
 
   /// IgnoredNode - Set of nodes whose result don't need to be legal.
+  /// FIXME: Remove once PR2957 is done.
   DenseSet<SDNode*> IgnoredNodesResultsSet;
 
   /// PromotedIntegers - For integer nodes that are below legal width, this map
@@ -150,8 +148,8 @@ private:
   /// which operands are the expanded version of the input.
   DenseMap<SDValue, std::pair<SDValue, SDValue> > SplitVectors;
 
-  /// WidenVectors - For vector nodes that need to be widened, indicates
-  /// the widen value to use.
+  /// WidenedVectors - For vector nodes that need to be widened, indicates
+  /// the widened value to use.
   DenseMap<SDValue, SDValue> WidenedVectors;
 
   /// ReplacedValues - For values that have been replaced with another,
@@ -570,6 +568,13 @@ private:
   //===--------------------------------------------------------------------===//
   // Vector Widening Support: LegalizeVectorTypes.cpp
   //===--------------------------------------------------------------------===//
+
+  /// GetWidenedVector - Given a processed vector Op which was widened into a
+  /// larger vector, this method returns the larger vector.  The elements of
+  /// the returned vector consist of the elements of Op followed by elements
+  /// containing rubbish.  For example, if Op is a v2i32 that was widened to a
+  /// v4i32, then this method returns a v4i32 for which the first two elements
+  /// are the same as those of Op, while the last two elements contain rubbish.
   SDValue GetWidenedVector(SDValue Op) {
     SDValue &WidenedOp = WidenedVectors[Op];
     RemapValue(WidenedOp);