various cleanups to tblgen, patch by Garrison Venn!

llvm-svn: 121837
This commit is contained in:
Chris Lattner 2010-12-15 04:48:22 +00:00
parent 15317a2f5b
commit 89dcb687bc
7 changed files with 19 additions and 28 deletions

View File

@ -493,7 +493,7 @@ struct SubtargetFeatureInfo {
class AsmMatcherInfo {
public:
/// Tracked Records
RecordKeeper& Records;
RecordKeeper &Records;
/// The tablegen AsmParser record.
Record *AsmParser;
@ -551,7 +551,7 @@ private:
public:
AsmMatcherInfo(Record *AsmParser,
CodeGenTarget &Target,
RecordKeeper& Records);
RecordKeeper &Records);
/// BuildInfo - Construct the various tables used during matching.
void BuildInfo();
@ -565,12 +565,8 @@ public:
return I == SubtargetFeatures.end() ? 0 : I->second;
}
RecordKeeper& getRecords() {
return(Records);
}
RecordKeeper& getRecords() const {
return(Records);
RecordKeeper &getRecords() const {
return Records;
}
};
@ -1004,7 +1000,7 @@ void AsmMatcherInfo::BuildOperandClasses() {
AsmMatcherInfo::AsmMatcherInfo(Record *asmParser,
CodeGenTarget &target,
RecordKeeper& records)
RecordKeeper &records)
: Records(records), AsmParser(asmParser), Target(target),
RegisterPrefix(AsmParser->getValueAsString("RegisterPrefix")) {
}

View File

@ -108,7 +108,7 @@ std::string llvm::getQualifiedName(const Record *R) {
/// getTarget - Return the current instance of the Target class.
///
CodeGenTarget::CodeGenTarget(RecordKeeper& records) : Records(records) {
CodeGenTarget::CodeGenTarget(RecordKeeper &records) : Records(records) {
std::vector<Record*> Targets = Records.getAllDerivedDefinitions("Target");
if (Targets.size() == 0)
throw std::string("ERROR: No 'Target' subclasses defined!");

View File

@ -23,7 +23,7 @@ namespace llvm {
class LLVMCConfigurationEmitter : public TableGenBackend {
RecordKeeper &Records;
public:
explicit LLVMCConfigurationEmitter(RecordKeeper& records) :
explicit LLVMCConfigurationEmitter(RecordKeeper &records) :
Records(records) {}
// run - Output the asmwriter, returning true on failure.

View File

@ -1236,8 +1236,8 @@ class Record {
public:
// Constructs a record. See also RecordKeeper::createRecord.
explicit Record(const std::string &N, SMLoc loc, RecordKeeper& records) :
// Constructs a record.
explicit Record(const std::string &N, SMLoc loc, RecordKeeper &records) :
ID(LastID++), Name(N), Loc(loc), TrackedRecords(records) {}
~Record() {}
@ -1324,7 +1324,7 @@ public:
void resolveReferencesTo(const RecordVal *RV);
RecordKeeper &getRecords() const {
return(TrackedRecords);
return TrackedRecords;
}
void dump() const;
@ -1466,12 +1466,6 @@ public:
std::vector<Record*>
getAllDerivedDefinitions(const std::string &ClassName) const;
// allocates and returns a record.
Record *createRecord(const std::string &N, SMLoc loc) {
return(new Record(N, loc, *this));
}
void dump() const;
};

View File

@ -1096,8 +1096,9 @@ Init *TGParser::ParseSimpleValue(Record *CurRec, RecTy *ItemType) {
// Create the new record, set it as CurRec temporarily.
static unsigned AnonCounter = 0;
Record *NewRec = Records.createRecord(
"anonymous.val."+utostr(AnonCounter++),NameLoc);
Record *NewRec = new Record("anonymous.val."+utostr(AnonCounter++),
NameLoc,
Records);
SubClassReference SCRef;
SCRef.RefLoc = NameLoc;
SCRef.Rec = Class;
@ -1661,7 +1662,7 @@ bool TGParser::ParseDef(MultiClass *CurMultiClass) {
Lex.Lex(); // Eat the 'def' token.
// Parse ObjectName and make a record for it.
Record *CurRec = Records.createRecord(ParseObjectName(), DefLoc);
Record *CurRec = new Record(ParseObjectName(), DefLoc, Records);
if (!CurMultiClass) {
// Top-level def definition.
@ -1728,7 +1729,7 @@ bool TGParser::ParseClass() {
return TokError("Class '" + CurRec->getName() + "' already defined");
} else {
// If this is the first reference to this class, create and add it.
CurRec = Records.createRecord(Lex.getCurStrVal(), Lex.getLoc());
CurRec = new Record(Lex.getCurStrVal(), Lex.getLoc(), Records);
Records.addClass(CurRec);
}
Lex.Lex(); // eat the name.
@ -1975,7 +1976,7 @@ bool TGParser::ParseDefm(MultiClass *CurMultiClass) {
}
}
Record *CurRec = Records.createRecord(DefName, DefmPrefixLoc);
Record *CurRec = new Record(DefName, DefmPrefixLoc, Records);
SubClassReference Ref;
Ref.RefLoc = DefmPrefixLoc;

View File

@ -50,9 +50,9 @@ class TGParser {
MultiClass *CurMultiClass;
// Record tracker
RecordKeeper& Records;
RecordKeeper &Records;
public:
TGParser(SourceMgr &SrcMgr, RecordKeeper& records) :
TGParser(SourceMgr &SrcMgr, RecordKeeper &records) :
Lex(SrcMgr), CurMultiClass(0), Records(records) {}
/// ParseFile - Main entrypoint for parsing a tblgen file. These parser

View File

@ -186,7 +186,7 @@ void llvm::PrintError(SMLoc ErrorLoc, const Twine &Msg) {
static bool ParseFile(const std::string &Filename,
const std::vector<std::string> &IncludeDirs,
SourceMgr &SrcMgr,
RecordKeeper& Records) {
RecordKeeper &Records) {
error_code ec;
MemoryBuffer *F = MemoryBuffer::getFileOrSTDIN(Filename.c_str(), ec);
if (F == 0) {