summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-09-14 04:17:02 +0000
committerChris Lattner <sabre@nondot.org>2004-09-14 04:17:02 +0000
commitb228657acc4afbdc74dc523e9f465d08935f9e8d (patch)
tree5db9c3f9dc7b09a7e382e3421f5b4a070ad3b0bd /utils
parent5148b633291ac301e443e241c5f0e5881fb1c5ef (diff)
downloadllvm-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.cpp13
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";