Remove the CPAttrParentAsRoot code, which is unused, and inconvenient

for a refactoring I'm working on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92503 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman 2010-01-04 20:31:55 +00:00
parent 6e120a1c70
commit 537ab90d8d
4 changed files with 4 additions and 34 deletions

View File

@ -843,11 +843,6 @@ class Pat<dag pattern, dag result> : Pattern<pattern, [result]>;
// Complex pattern definitions. // Complex pattern definitions.
// //
class CPAttribute;
// Pass the parent Operand as root to CP function rather
// than the root of the sub-DAG
def CPAttrParentAsRoot : CPAttribute;
// Complex patterns, e.g. X86 addressing mode, requires pattern matching code // Complex patterns, e.g. X86 addressing mode, requires pattern matching code
// in C++. NumOperands is the number of operands returned by the select function; // in C++. NumOperands is the number of operands returned by the select function;
// SelectFunc is the name of the function used to pattern match the max. pattern; // SelectFunc is the name of the function used to pattern match the max. pattern;
@ -855,12 +850,10 @@ def CPAttrParentAsRoot : CPAttribute;
// e.g. X86 addressing mode - def addr : ComplexPattern<4, "SelectAddr", [add]>; // e.g. X86 addressing mode - def addr : ComplexPattern<4, "SelectAddr", [add]>;
// //
class ComplexPattern<ValueType ty, int numops, string fn, class ComplexPattern<ValueType ty, int numops, string fn,
list<SDNode> roots = [], list<SDNodeProperty> props = [], list<SDNode> roots = [], list<SDNodeProperty> props = []> {
list<CPAttribute> attrs = []> {
ValueType Ty = ty; ValueType Ty = ty;
int NumOperands = numops; int NumOperands = numops;
string SelectFunc = fn; string SelectFunc = fn;
list<SDNode> RootNodes = roots; list<SDNode> RootNodes = roots;
list<SDNodeProperty> Properties = props; list<SDNodeProperty> Properties = props;
list<CPAttribute> Attributes = attrs;
} }

View File

@ -402,18 +402,6 @@ ComplexPattern::ComplexPattern(Record *R) {
<< "' on ComplexPattern '" << R->getName() << "'!\n"; << "' on ComplexPattern '" << R->getName() << "'!\n";
exit(1); exit(1);
} }
// Parse the attributes.
Attributes = 0;
PropList = R->getValueAsListOfDefs("Attributes");
for (unsigned i = 0, e = PropList.size(); i != e; ++i)
if (PropList[i]->getName() == "CPAttrParentAsRoot") {
Attributes |= 1 << CPAttrParentAsRoot;
} else {
errs() << "Unsupported pattern attribute '" << PropList[i]->getName()
<< "' on ComplexPattern '" << R->getName() << "'!\n";
exit(1);
}
} }
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//

View File

@ -46,9 +46,6 @@ enum SDNP {
SDNPMemOperand SDNPMemOperand
}; };
// ComplexPattern attributes.
enum CPAttr { CPAttrParentAsRoot };
/// getValueType - Return the MVT::SimpleValueType that the specified TableGen /// getValueType - Return the MVT::SimpleValueType that the specified TableGen
/// record corresponds to. /// record corresponds to.
MVT::SimpleValueType getValueType(Record *Rec); MVT::SimpleValueType getValueType(Record *Rec);
@ -227,7 +224,6 @@ class ComplexPattern {
std::string SelectFunc; std::string SelectFunc;
std::vector<Record*> RootNodes; std::vector<Record*> RootNodes;
unsigned Properties; // Node properties unsigned Properties; // Node properties
unsigned Attributes; // Pattern attributes
public: public:
ComplexPattern() : NumOperands(0) {} ComplexPattern() : NumOperands(0) {}
ComplexPattern(Record *R); ComplexPattern(Record *R);
@ -239,7 +235,6 @@ public:
return RootNodes; return RootNodes;
} }
bool hasProperty(enum SDNP Prop) const { return Properties & (1 << Prop); } bool hasProperty(enum SDNP Prop) const { return Properties & (1 << Prop); }
bool hasAttribute(enum CPAttr Attr) const { return Attributes & (1 << Attr); }
}; };
} // End llvm namespace } // End llvm namespace

View File

@ -610,7 +610,7 @@ public:
emitCheck(MaskPredicate + RootName + "0, Tmp" + utostr(NTmp) + emitCheck(MaskPredicate + RootName + "0, Tmp" + utostr(NTmp) +
", INT64_C(" + itostr(II->getValue()) + "))"); ", INT64_C(" + itostr(II->getValue()) + "))");
EmitChildMatchCode(N->getChild(0), N, RootName + utostr(0), RootName, EmitChildMatchCode(N->getChild(0), N, RootName + utostr(0),
ChainSuffix + utostr(0), FoundChain); ChainSuffix + utostr(0), FoundChain);
return; return;
} }
@ -621,7 +621,7 @@ public:
emitInit("SDValue " + RootName + utostr(OpNo) + " = " + emitInit("SDValue " + RootName + utostr(OpNo) + " = " +
RootName + ".getOperand(" +utostr(OpNo) + ");"); RootName + ".getOperand(" +utostr(OpNo) + ");");
EmitChildMatchCode(N->getChild(i), N, RootName + utostr(OpNo), RootName, EmitChildMatchCode(N->getChild(i), N, RootName + utostr(OpNo),
ChainSuffix + utostr(OpNo), FoundChain); ChainSuffix + utostr(OpNo), FoundChain);
} }
@ -654,7 +654,6 @@ public:
void EmitChildMatchCode(TreePatternNode *Child, TreePatternNode *Parent, void EmitChildMatchCode(TreePatternNode *Child, TreePatternNode *Parent,
const std::string &RootName, const std::string &RootName,
const std::string &ParentRootName,
const std::string &ChainSuffix, bool &FoundChain) { const std::string &ChainSuffix, bool &FoundChain) {
if (!Child->isLeaf()) { if (!Child->isLeaf()) {
// If it's not a leaf, recursively match. // If it's not a leaf, recursively match.
@ -719,12 +718,7 @@ public:
emitCode("SDValue " + ChainName + ";"); emitCode("SDValue " + ChainName + ";");
} }
std::string Code = Fn + "("; std::string Code = Fn + "(N, ";
if (CP->hasAttribute(CPAttrParentAsRoot)) {
Code += ParentRootName + ", ";
} else {
Code += "N, ";
}
if (CP->hasProperty(SDNPHasChain)) { if (CP->hasProperty(SDNPHasChain)) {
std::string ParentName(RootName.begin(), RootName.end()-1); std::string ParentName(RootName.begin(), RootName.end()-1);
Code += ParentName + ", "; Code += ParentName + ", ";