forked from OSchip/llvm-project
Delete CodeInit and CodeRecTy from TableGen.
The code type was always identical to a string anyway. Now it is simply a synonym. The code literal syntax [{...}] is still valid. llvm-svn: 148092
This commit is contained in:
parent
9d1c5eeb32
commit
dd8fbf572e
|
@ -32,7 +32,6 @@ class BitsRecTy;
|
|||
class IntRecTy;
|
||||
class StringRecTy;
|
||||
class ListRecTy;
|
||||
class CodeRecTy;
|
||||
class DagRecTy;
|
||||
class RecordRecTy;
|
||||
|
||||
|
@ -43,7 +42,6 @@ class BitInit;
|
|||
class BitsInit;
|
||||
class IntInit;
|
||||
class StringInit;
|
||||
class CodeInit;
|
||||
class ListInit;
|
||||
class UnOpInit;
|
||||
class BinOpInit;
|
||||
|
@ -100,7 +98,6 @@ public: // These methods should only be called from subclasses of Init
|
|||
virtual Init *convertValue( TernOpInit *UI) {
|
||||
return convertValue((TypedInit*)UI);
|
||||
}
|
||||
virtual Init *convertValue( CodeInit *CI) { return 0; }
|
||||
virtual Init *convertValue(VarBitInit *VB) { return 0; }
|
||||
virtual Init *convertValue( DefInit *DI) { return 0; }
|
||||
virtual Init *convertValue( DagInit *DI) { return 0; }
|
||||
|
@ -120,7 +117,6 @@ public: // These methods should only be called by subclasses of RecTy.
|
|||
virtual bool baseClassOf(const IntRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const StringRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const ListRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const CodeRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const DagRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const RecordRecTy *RHS) const { return false; }
|
||||
};
|
||||
|
@ -145,7 +141,6 @@ public:
|
|||
virtual Init *convertValue( IntInit *II);
|
||||
virtual Init *convertValue(StringInit *SI) { return 0; }
|
||||
virtual Init *convertValue( ListInit *LI) { return 0; }
|
||||
virtual Init *convertValue( CodeInit *CI) { return 0; }
|
||||
virtual Init *convertValue(VarBitInit *VB) { return (Init*)VB; }
|
||||
virtual Init *convertValue( DefInit *DI) { return 0; }
|
||||
virtual Init *convertValue( DagInit *DI) { return 0; }
|
||||
|
@ -166,7 +161,6 @@ public:
|
|||
virtual bool baseClassOf(const IntRecTy *RHS) const { return true; }
|
||||
virtual bool baseClassOf(const StringRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const ListRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const CodeRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const DagRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const RecordRecTy *RHS) const { return false; }
|
||||
|
||||
|
@ -190,7 +184,6 @@ public:
|
|||
virtual Init *convertValue( IntInit *II);
|
||||
virtual Init *convertValue(StringInit *SI) { return 0; }
|
||||
virtual Init *convertValue( ListInit *LI) { return 0; }
|
||||
virtual Init *convertValue( CodeInit *CI) { return 0; }
|
||||
virtual Init *convertValue(VarBitInit *VB) { return 0; }
|
||||
virtual Init *convertValue( DefInit *DI) { return 0; }
|
||||
virtual Init *convertValue( DagInit *DI) { return 0; }
|
||||
|
@ -213,7 +206,6 @@ public:
|
|||
virtual bool baseClassOf(const IntRecTy *RHS) const { return true; }
|
||||
virtual bool baseClassOf(const StringRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const ListRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const CodeRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const DagRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const RecordRecTy *RHS) const { return false; }
|
||||
|
||||
|
@ -234,7 +226,6 @@ public:
|
|||
virtual Init *convertValue( IntInit *II) { return (Init*)II; }
|
||||
virtual Init *convertValue(StringInit *SI) { return 0; }
|
||||
virtual Init *convertValue( ListInit *LI) { return 0; }
|
||||
virtual Init *convertValue( CodeInit *CI) { return 0; }
|
||||
virtual Init *convertValue(VarBitInit *VB) { return 0; }
|
||||
virtual Init *convertValue( DefInit *DI) { return 0; }
|
||||
virtual Init *convertValue( DagInit *DI) { return 0; }
|
||||
|
@ -256,7 +247,6 @@ public:
|
|||
virtual bool baseClassOf(const IntRecTy *RHS) const { return true; }
|
||||
virtual bool baseClassOf(const StringRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const ListRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const CodeRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const DagRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const RecordRecTy *RHS) const { return false; }
|
||||
|
||||
|
@ -280,7 +270,6 @@ public:
|
|||
virtual Init *convertValue( BinOpInit *BO);
|
||||
virtual Init *convertValue( TernOpInit *BO) { return RecTy::convertValue(BO);}
|
||||
|
||||
virtual Init *convertValue( CodeInit *CI) { return 0; }
|
||||
virtual Init *convertValue(VarBitInit *VB) { return 0; }
|
||||
virtual Init *convertValue( DefInit *DI) { return 0; }
|
||||
virtual Init *convertValue( DagInit *DI) { return 0; }
|
||||
|
@ -299,7 +288,6 @@ public:
|
|||
virtual bool baseClassOf(const IntRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const StringRecTy *RHS) const { return true; }
|
||||
virtual bool baseClassOf(const ListRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const CodeRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const DagRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const RecordRecTy *RHS) const { return false; }
|
||||
};
|
||||
|
@ -323,7 +311,6 @@ public:
|
|||
virtual Init *convertValue( IntInit *II) { return 0; }
|
||||
virtual Init *convertValue(StringInit *SI) { return 0; }
|
||||
virtual Init *convertValue( ListInit *LI);
|
||||
virtual Init *convertValue( CodeInit *CI) { return 0; }
|
||||
virtual Init *convertValue(VarBitInit *VB) { return 0; }
|
||||
virtual Init *convertValue( DefInit *DI) { return 0; }
|
||||
virtual Init *convertValue( DagInit *DI) { return 0; }
|
||||
|
@ -347,47 +334,6 @@ public:
|
|||
virtual bool baseClassOf(const ListRecTy *RHS) const {
|
||||
return RHS->getElementType()->typeIsConvertibleTo(Ty);
|
||||
}
|
||||
virtual bool baseClassOf(const CodeRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const DagRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const RecordRecTy *RHS) const { return false; }
|
||||
};
|
||||
|
||||
/// CodeRecTy - 'code' - Represent an code fragment, function or method.
|
||||
///
|
||||
class CodeRecTy : public RecTy {
|
||||
static CodeRecTy Shared;
|
||||
CodeRecTy() {}
|
||||
public:
|
||||
static CodeRecTy *get() { return &Shared; }
|
||||
|
||||
virtual Init *convertValue( UnsetInit *UI) { return (Init*)UI; }
|
||||
virtual Init *convertValue( BitInit *BI) { return 0; }
|
||||
virtual Init *convertValue( BitsInit *BI) { return 0; }
|
||||
virtual Init *convertValue( IntInit *II) { return 0; }
|
||||
virtual Init *convertValue(StringInit *SI) { return 0; }
|
||||
virtual Init *convertValue( ListInit *LI) { return 0; }
|
||||
virtual Init *convertValue( CodeInit *CI) { return (Init*)CI; }
|
||||
virtual Init *convertValue(VarBitInit *VB) { return 0; }
|
||||
virtual Init *convertValue( DefInit *DI) { return 0; }
|
||||
virtual Init *convertValue( DagInit *DI) { return 0; }
|
||||
virtual Init *convertValue( UnOpInit *UI) { return RecTy::convertValue(UI);}
|
||||
virtual Init *convertValue( BinOpInit *UI) { return RecTy::convertValue(UI);}
|
||||
virtual Init *convertValue( TernOpInit *UI) { return RecTy::convertValue(UI);}
|
||||
virtual Init *convertValue( TypedInit *TI);
|
||||
virtual Init *convertValue( VarInit *VI) { return RecTy::convertValue(VI);}
|
||||
virtual Init *convertValue( FieldInit *FI) { return RecTy::convertValue(FI);}
|
||||
|
||||
std::string getAsString() const { return "code"; }
|
||||
|
||||
bool typeIsConvertibleTo(const RecTy *RHS) const {
|
||||
return RHS->baseClassOf(this);
|
||||
}
|
||||
virtual bool baseClassOf(const BitRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const BitsRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const IntRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const StringRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const ListRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const CodeRecTy *RHS) const { return true; }
|
||||
virtual bool baseClassOf(const DagRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const RecordRecTy *RHS) const { return false; }
|
||||
};
|
||||
|
@ -406,7 +352,6 @@ public:
|
|||
virtual Init *convertValue( IntInit *II) { return 0; }
|
||||
virtual Init *convertValue(StringInit *SI) { return 0; }
|
||||
virtual Init *convertValue( ListInit *LI) { return 0; }
|
||||
virtual Init *convertValue( CodeInit *CI) { return 0; }
|
||||
virtual Init *convertValue(VarBitInit *VB) { return 0; }
|
||||
virtual Init *convertValue( DefInit *DI) { return 0; }
|
||||
virtual Init *convertValue( UnOpInit *BO);
|
||||
|
@ -428,7 +373,6 @@ public:
|
|||
virtual bool baseClassOf(const IntRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const StringRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const ListRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const CodeRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const DagRecTy *RHS) const { return true; }
|
||||
virtual bool baseClassOf(const RecordRecTy *RHS) const { return false; }
|
||||
};
|
||||
|
@ -452,7 +396,6 @@ public:
|
|||
virtual Init *convertValue( IntInit *II) { return 0; }
|
||||
virtual Init *convertValue(StringInit *SI) { return 0; }
|
||||
virtual Init *convertValue( ListInit *LI) { return 0; }
|
||||
virtual Init *convertValue( CodeInit *CI) { return 0; }
|
||||
virtual Init *convertValue(VarBitInit *VB) { return 0; }
|
||||
virtual Init *convertValue( UnOpInit *UI) { return RecTy::convertValue(UI);}
|
||||
virtual Init *convertValue( BinOpInit *UI) { return RecTy::convertValue(UI);}
|
||||
|
@ -473,7 +416,6 @@ public:
|
|||
virtual bool baseClassOf(const IntRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const StringRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const ListRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const CodeRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const DagRecTy *RHS) const { return false; }
|
||||
virtual bool baseClassOf(const RecordRecTy *RHS) const;
|
||||
};
|
||||
|
@ -788,29 +730,6 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
/// CodeInit - "[{...}]" - Represent a code fragment.
|
||||
///
|
||||
class CodeInit : public Init {
|
||||
std::string Value;
|
||||
|
||||
explicit CodeInit(const std::string &V) : Value(V) {}
|
||||
|
||||
CodeInit(const CodeInit &Other); // Do not define.
|
||||
CodeInit &operator=(const CodeInit &Other); // Do not define.
|
||||
virtual void anchor();
|
||||
|
||||
public:
|
||||
static CodeInit *get(StringRef);
|
||||
|
||||
const std::string &getValue() const { return Value; }
|
||||
|
||||
virtual Init *convertInitializerTo(RecTy *Ty) const {
|
||||
return Ty->convertValue(const_cast<CodeInit *>(this));
|
||||
}
|
||||
|
||||
virtual std::string getAsString() const { return "[{" + Value + "}]"; }
|
||||
};
|
||||
|
||||
/// ListInit - [AL, AH, CL] - Represent a list of defs
|
||||
///
|
||||
class ListInit : public TypedInit, public FoldingSetNode {
|
||||
|
@ -1607,12 +1526,6 @@ public:
|
|||
/// the value is not the right type.
|
||||
///
|
||||
DagInit *getValueAsDag(StringRef FieldName) const;
|
||||
|
||||
/// getValueAsCode - This method looks up the specified field and returns
|
||||
/// its value as the string data in a CodeInit, throwing an exception if the
|
||||
/// field does not exist or if the value is not a code object.
|
||||
///
|
||||
std::string getValueAsCode(StringRef FieldName) const;
|
||||
};
|
||||
|
||||
raw_ostream &operator<<(raw_ostream &OS, const Record &R);
|
||||
|
|
|
@ -78,7 +78,6 @@ template<> struct DenseMapInfo<TableGenStringKey> {
|
|||
BitRecTy BitRecTy::Shared;
|
||||
IntRecTy IntRecTy::Shared;
|
||||
StringRecTy StringRecTy::Shared;
|
||||
CodeRecTy CodeRecTy::Shared;
|
||||
DagRecTy DagRecTy::Shared;
|
||||
|
||||
void RecTy::anchor() { }
|
||||
|
@ -316,12 +315,6 @@ Init *ListRecTy::convertValue(TypedInit *TI) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
Init *CodeRecTy::convertValue(TypedInit *TI) {
|
||||
if (TI->getType()->typeIsConvertibleTo(this))
|
||||
return TI;
|
||||
return 0;
|
||||
}
|
||||
|
||||
Init *DagRecTy::convertValue(TypedInit *TI) {
|
||||
if (TI->getType()->typeIsConvertibleTo(this))
|
||||
return TI;
|
||||
|
@ -582,17 +575,6 @@ StringInit *StringInit::get(StringRef V) {
|
|||
return I;
|
||||
}
|
||||
|
||||
void CodeInit::anchor() { }
|
||||
|
||||
CodeInit *CodeInit::get(StringRef V) {
|
||||
typedef StringMap<CodeInit *> Pool;
|
||||
static Pool ThePool;
|
||||
|
||||
CodeInit *&I = ThePool[V];
|
||||
if (!I) I = new CodeInit(V);
|
||||
return I;
|
||||
}
|
||||
|
||||
static void ProfileListInit(FoldingSetNodeID &ID,
|
||||
ArrayRef<Init *> Range,
|
||||
RecTy *EltTy) {
|
||||
|
@ -1993,18 +1975,6 @@ DagInit *Record::getValueAsDag(StringRef FieldName) const {
|
|||
"' does not have a dag initializer!";
|
||||
}
|
||||
|
||||
std::string Record::getValueAsCode(StringRef FieldName) const {
|
||||
const RecordVal *R = getValue(FieldName);
|
||||
if (R == 0 || R->getValue() == 0)
|
||||
throw "Record `" + getName() + "' does not have a field named `" +
|
||||
FieldName.str() + "'!\n";
|
||||
|
||||
if (CodeInit *CI = dynamic_cast<CodeInit*>(R->getValue()))
|
||||
return CI->getValue();
|
||||
throw "Record `" + getName() + "', field `" + FieldName.str() +
|
||||
"' does not have a code initializer!";
|
||||
}
|
||||
|
||||
|
||||
void MultiClass::dump() const {
|
||||
errs() << "Record:\n";
|
||||
|
|
|
@ -595,11 +595,11 @@ bool TGParser::ParseOptionalBitList(std::vector<unsigned> &Ranges) {
|
|||
/// ParseType - Parse and return a tblgen type. This returns null on error.
|
||||
///
|
||||
/// Type ::= STRING // string type
|
||||
/// Type ::= CODE // code type
|
||||
/// Type ::= BIT // bit type
|
||||
/// Type ::= BITS '<' INTVAL '>' // bits<x> type
|
||||
/// Type ::= INT // int type
|
||||
/// Type ::= LIST '<' Type '>' // list<x> type
|
||||
/// Type ::= CODE // code type
|
||||
/// Type ::= DAG // dag type
|
||||
/// Type ::= ClassID // Record Type
|
||||
///
|
||||
|
@ -607,9 +607,9 @@ RecTy *TGParser::ParseType() {
|
|||
switch (Lex.getCode()) {
|
||||
default: TokError("Unknown token when expecting a type"); return 0;
|
||||
case tgtok::String: Lex.Lex(); return StringRecTy::get();
|
||||
case tgtok::Code: Lex.Lex(); return StringRecTy::get();
|
||||
case tgtok::Bit: Lex.Lex(); return BitRecTy::get();
|
||||
case tgtok::Int: Lex.Lex(); return IntRecTy::get();
|
||||
case tgtok::Code: Lex.Lex(); return CodeRecTy::get();
|
||||
case tgtok::Dag: Lex.Lex(); return DagRecTy::get();
|
||||
case tgtok::Id:
|
||||
if (Record *R = ParseClassID()) return RecordRecTy::get(R);
|
||||
|
@ -1104,7 +1104,7 @@ Init *TGParser::ParseSimpleValue(Record *CurRec, RecTy *ItemType,
|
|||
break;
|
||||
}
|
||||
case tgtok::CodeFragment:
|
||||
R = CodeInit::get(Lex.getCurStrVal());
|
||||
R = StringInit::get(Lex.getCurStrVal());
|
||||
Lex.Lex();
|
||||
break;
|
||||
case tgtok::question:
|
||||
|
|
|
@ -629,11 +629,11 @@ TreePredicateFn::TreePredicateFn(TreePattern *N) : PatFragRec(N) {
|
|||
}
|
||||
|
||||
std::string TreePredicateFn::getPredCode() const {
|
||||
return PatFragRec->getRecord()->getValueAsCode("PredicateCode");
|
||||
return PatFragRec->getRecord()->getValueAsString("PredicateCode");
|
||||
}
|
||||
|
||||
std::string TreePredicateFn::getImmCode() const {
|
||||
return PatFragRec->getRecord()->getValueAsCode("ImmediateCode");
|
||||
return PatFragRec->getRecord()->getValueAsString("ImmediateCode");
|
||||
}
|
||||
|
||||
|
||||
|
@ -2070,7 +2070,7 @@ void CodeGenDAGPatterns::ParseNodeTransforms() {
|
|||
while (!Xforms.empty()) {
|
||||
Record *XFormNode = Xforms.back();
|
||||
Record *SDNode = XFormNode->getValueAsDef("Opcode");
|
||||
std::string Code = XFormNode->getValueAsCode("XFormFunction");
|
||||
std::string Code = XFormNode->getValueAsString("XFormFunction");
|
||||
SDNodeXForms.insert(std::make_pair(XFormNode, NodeXForm(SDNode, Code)));
|
||||
|
||||
Xforms.pop_back();
|
||||
|
|
|
@ -330,7 +330,7 @@ CodeGenRegisterClass::CodeGenRegisterClass(CodeGenRegBank &RegBank, Record *R)
|
|||
SpillAlignment = R->getValueAsInt("Alignment");
|
||||
CopyCost = R->getValueAsInt("CopyCost");
|
||||
Allocatable = R->getValueAsBit("isAllocatable");
|
||||
AltOrderSelect = R->getValueAsCode("AltOrderSelect");
|
||||
AltOrderSelect = R->getValueAsString("AltOrderSelect");
|
||||
}
|
||||
|
||||
// Create an inferred register class that was missing from the .td files.
|
||||
|
|
Loading…
Reference in New Issue