Fix some typos. Also, the WidenedVectors map

was not being cleaned by ExpungeNode.

llvm-svn: 62167
This commit is contained in:
Duncan Sands 2009-01-13 14:42:39 +00:00
parent 013be76241
commit 90d2a7bd72
2 changed files with 20 additions and 9 deletions

View File

@ -574,6 +574,12 @@ void DAGTypeLegalizer::ExpungeNode(SDNode *N) {
RemapValue(I->second); 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 for (DenseMap<SDValue, std::pair<SDValue, SDValue> >::iterator
I = ExpandedIntegers.begin(), E = ExpandedIntegers.end(); I != E; ++I){ I = ExpandedIntegers.begin(), E = ExpandedIntegers.end(); I != E; ++I){
assert(I->first.getNode() != N); assert(I->first.getNode() != N);
@ -817,7 +823,7 @@ void DAGTypeLegalizer::SetWidenedVector(SDValue Op, SDValue Result) {
AnalyzeNewValue(Result); AnalyzeNewValue(Result);
SDValue &OpEntry = WidenedVectors[Op]; SDValue &OpEntry = WidenedVectors[Op];
assert(OpEntry.getNode() == 0 && "Node is already promoted!"); assert(OpEntry.getNode() == 0 && "Node already widened!");
OpEntry = Result; OpEntry = Result;
} }

View File

@ -65,7 +65,7 @@ private:
ExpandFloat, // Split this float type into two of half the size. ExpandFloat, // Split this float type into two of half the size.
ScalarizeVector, // Replace this one-element vector with its element type. ScalarizeVector, // Replace this one-element vector with its element type.
SplitVector, // This vector type should be split into smaller vectors. 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 /// 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)". /// enum from TargetLowering. This can be queried with "getTypeAction(VT)".
TargetLowering::ValueTypeActionImpl ValueTypeActions; TargetLowering::ValueTypeActionImpl ValueTypeActions;
/// getTypeAction - Return how we should legalize values of this type, either /// getTypeAction - Return how we should legalize values of this type.
/// 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.
LegalizeAction getTypeAction(MVT VT) const { LegalizeAction getTypeAction(MVT VT) const {
switch (ValueTypeActions.getTypeAction(VT)) { switch (ValueTypeActions.getTypeAction(VT)) {
default: default:
@ -118,12 +114,14 @@ private:
} }
/// IgnoreNodeResults - Pretend all of this node's results are legal. /// IgnoreNodeResults - Pretend all of this node's results are legal.
/// FIXME: Remove once PR2957 is done.
bool IgnoreNodeResults(SDNode *N) const { bool IgnoreNodeResults(SDNode *N) const {
return N->getOpcode() == ISD::TargetConstant || return N->getOpcode() == ISD::TargetConstant ||
IgnoredNodesResultsSet.count(N); IgnoredNodesResultsSet.count(N);
} }
/// IgnoredNode - Set of nodes whose result don't need to be legal. /// IgnoredNode - Set of nodes whose result don't need to be legal.
/// FIXME: Remove once PR2957 is done.
DenseSet<SDNode*> IgnoredNodesResultsSet; DenseSet<SDNode*> IgnoredNodesResultsSet;
/// PromotedIntegers - For integer nodes that are below legal width, this map /// 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. /// which operands are the expanded version of the input.
DenseMap<SDValue, std::pair<SDValue, SDValue> > SplitVectors; DenseMap<SDValue, std::pair<SDValue, SDValue> > SplitVectors;
/// WidenVectors - For vector nodes that need to be widened, indicates /// WidenedVectors - For vector nodes that need to be widened, indicates
/// the widen value to use. /// the widened value to use.
DenseMap<SDValue, SDValue> WidenedVectors; DenseMap<SDValue, SDValue> WidenedVectors;
/// ReplacedValues - For values that have been replaced with another, /// ReplacedValues - For values that have been replaced with another,
@ -570,6 +568,13 @@ private:
//===--------------------------------------------------------------------===// //===--------------------------------------------------------------------===//
// Vector Widening Support: LegalizeVectorTypes.cpp // 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 GetWidenedVector(SDValue Op) {
SDValue &WidenedOp = WidenedVectors[Op]; SDValue &WidenedOp = WidenedVectors[Op];
RemapValue(WidenedOp); RemapValue(WidenedOp);