summaryrefslogtreecommitdiff
path: root/support
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-08-07 19:41:59 +0000
committerChris Lattner <sabre@nondot.org>2003-08-07 19:41:59 +0000
commita40e5ad69f5ab5da1671a5e84e75a60202ad03d5 (patch)
tree58475a6b675e9ecdb86047f32da7976f165f6ccb /support
parent2b8b2b4aeeb4b64ed57372faf8a4b2a25dc3a5ec (diff)
downloadllvm-a40e5ad69f5ab5da1671a5e84e75a60202ad03d5.tar.gz
llvm-a40e5ad69f5ab5da1671a5e84e75a60202ad03d5.tar.bz2
llvm-a40e5ad69f5ab5da1671a5e84e75a60202ad03d5.tar.xz
Add and use a new method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7682 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'support')
-rw-r--r--support/tools/TableGen/Record.h7
-rw-r--r--support/tools/TableGen/RegisterInfoEmitter.cpp3
2 files changed, 8 insertions, 2 deletions
diff --git a/support/tools/TableGen/Record.h b/support/tools/TableGen/Record.h
index b621451643..5c50a07651 100644
--- a/support/tools/TableGen/Record.h
+++ b/support/tools/TableGen/Record.h
@@ -703,6 +703,13 @@ public:
return false;
}
+ bool isSubClassOf(const std::string &Name) const {
+ for (unsigned i = 0, e = SuperClasses.size(); i != e; ++i)
+ if (SuperClasses[i]->getName() == Name)
+ return true;
+ return false;
+ }
+
void addSuperClass(Record *R) {
assert(!isSubClassOf(R) && "Already subclassing record!");
SuperClasses.push_back(R);
diff --git a/support/tools/TableGen/RegisterInfoEmitter.cpp b/support/tools/TableGen/RegisterInfoEmitter.cpp
index f1f8a86bd4..9ef5f020a2 100644
--- a/support/tools/TableGen/RegisterInfoEmitter.cpp
+++ b/support/tools/TableGen/RegisterInfoEmitter.cpp
@@ -73,7 +73,6 @@ void RegisterInfoEmitter::run(std::ostream &OS) {
Records.getAllDerivedDefinitions("RegisterClass");
std::vector<Record*> Registers = Records.getAllDerivedDefinitions("Register");
- Record *RegisterClass = Records.getClass("Register");
std::set<Record*> RegistersFound;
std::vector<std::string> RegClassNames;
@@ -99,7 +98,7 @@ void RegisterInfoEmitter::run(std::ostream &OS) {
DefInit *RegDef = dynamic_cast<DefInit*>(RegList->getElement(i));
if (!RegDef) throw "Register class member is not a record!";
Record *Reg = RegDef->getDef();
- if (!Reg->isSubClassOf(RegisterClass))
+ if (!Reg->isSubClassOf("Register"))
throw "Register Class member '" + Reg->getName() +
" does not derive from the Register class!";
if (RegistersFound.count(Reg))