class AsmMatcherInfo {
public:
/// Tracked Records
- RecordKeeper& Records;
+ RecordKeeper &Records;
/// The tablegen AsmParser record.
Record *AsmParser;
public:
AsmMatcherInfo(Record *AsmParser,
CodeGenTarget &Target,
- RecordKeeper& Records);
+ RecordKeeper &Records);
/// BuildInfo - Construct the various tables used during matching.
void BuildInfo();
return I == SubtargetFeatures.end() ? 0 : I->second;
}
- RecordKeeper& getRecords() {
- return(Records);
- }
-
- RecordKeeper& getRecords() const {
- return(Records);
+ RecordKeeper &getRecords() const {
+ return Records;
}
};
AsmMatcherInfo::AsmMatcherInfo(Record *asmParser,
CodeGenTarget &target,
- RecordKeeper& records)
+ RecordKeeper &records)
: Records(records), AsmParser(asmParser), Target(target),
RegisterPrefix(AsmParser->getValueAsString("RegisterPrefix")) {
}
/// 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!");
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.
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() {}
void resolveReferencesTo(const RecordVal *RV);
RecordKeeper &getRecords() const {
- return(TrackedRecords);
+ return TrackedRecords;
}
void dump() const;
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;
};
// 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;
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.
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.
}
}
- Record *CurRec = Records.createRecord(DefName, DefmPrefixLoc);
+ Record *CurRec = new Record(DefName, DefmPrefixLoc, Records);
SubClassReference Ref;
Ref.RefLoc = DefmPrefixLoc;
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
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) {