diff options
author | Chris Lattner <sabre@nondot.org> | 2004-09-14 04:17:02 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-09-14 04:17:02 +0000 |
commit | b228657acc4afbdc74dc523e9f465d08935f9e8d (patch) | |
tree | 5db9c3f9dc7b09a7e382e3421f5b4a070ad3b0bd /utils | |
parent | 5148b633291ac301e443e241c5f0e5881fb1c5ef (diff) | |
download | llvm-b228657acc4afbdc74dc523e9f465d08935f9e8d.tar.gz llvm-b228657acc4afbdc74dc523e9f465d08935f9e8d.tar.bz2 llvm-b228657acc4afbdc74dc523e9f465d08935f9e8d.tar.xz |
Revamp the Register class, and allow the use of the RegisterGroup class to
specify aliases directly in register definitions.
Patch contributed by Jason Eckhardt!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16330 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils')
-rw-r--r-- | utils/TableGen/RegisterInfoEmitter.cpp | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/utils/TableGen/RegisterInfoEmitter.cpp b/utils/TableGen/RegisterInfoEmitter.cpp index 487890d374..e37442b1c9 100644 --- a/utils/TableGen/RegisterInfoEmitter.cpp +++ b/utils/TableGen/RegisterInfoEmitter.cpp @@ -139,15 +139,12 @@ void RegisterInfoEmitter::run(std::ostream &OS) { OS << " };\n"; // Emit register class aliases... - std::vector<Record*> RegisterAliasesRecs = - Records.getAllDerivedDefinitions("RegisterAliases"); std::map<Record*, std::set<Record*> > RegisterAliases; + const std::vector<CodeGenRegister> &Regs = Target.getRegisters(); - for (unsigned i = 0, e = RegisterAliasesRecs.size(); i != e; ++i) { - Record *AS = RegisterAliasesRecs[i]; - Record *R = AS->getValueAsDef("Reg"); - ListInit *LI = AS->getValueAsListInit("Aliases"); - + for (unsigned i = 0, e = Regs.size(); i != e; ++i) { + Record *R = Regs[i].TheDef; + ListInit *LI = Regs[i].TheDef->getValueAsListInit("Aliases"); // Add information that R aliases all of the elements in the list... and // that everything in the list aliases R. for (unsigned j = 0, e = LI->getSize(); j != e; ++j) { @@ -165,7 +162,7 @@ void RegisterInfoEmitter::run(std::ostream &OS) { << " specified multiple times!\n"; RegisterAliases[Reg->getDef()].insert(R); } - } + } if (!RegisterAliases.empty()) OS << "\n\n // Register Alias Sets...\n"; |