diff options
author | Jim Grosbach <grosbach@apple.com> | 2011-03-11 01:33:54 +0000 |
---|---|---|
committer | Jim Grosbach <grosbach@apple.com> | 2011-03-11 01:33:54 +0000 |
commit | 17fad045cccf34822d3163ada9e70a8f4528746e (patch) | |
tree | 922194769e0f5ec768521b7f3f0cf08119660236 | |
parent | 510207cb1e7427df711ac85002cab622f67bdf7c (diff) | |
download | llvm-17fad045cccf34822d3163ada9e70a8f4528746e.tar.gz llvm-17fad045cccf34822d3163ada9e70a8f4528746e.tar.bz2 llvm-17fad045cccf34822d3163ada9e70a8f4528746e.tar.xz |
Make the register enum value part of the CodeGenRegister struct.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127448 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | utils/TableGen/CodeGenRegisters.h | 1 | ||||
-rw-r--r-- | utils/TableGen/CodeGenTarget.cpp | 3 | ||||
-rw-r--r-- | utils/TableGen/RegisterInfoEmitter.cpp | 5 |
3 files changed, 8 insertions, 1 deletions
diff --git a/utils/TableGen/CodeGenRegisters.h b/utils/TableGen/CodeGenRegisters.h index 7f45b6ffe0..f6d6af8c97 100644 --- a/utils/TableGen/CodeGenRegisters.h +++ b/utils/TableGen/CodeGenRegisters.h @@ -30,6 +30,7 @@ namespace llvm { Record *TheDef; const std::string &getName() const; unsigned DeclaredSpillSize, DeclaredSpillAlignment; + unsigned EnumValue; CodeGenRegister(Record *R); }; diff --git a/utils/TableGen/CodeGenTarget.cpp b/utils/TableGen/CodeGenTarget.cpp index 52df698f4d..cc09c8d683 100644 --- a/utils/TableGen/CodeGenTarget.cpp +++ b/utils/TableGen/CodeGenTarget.cpp @@ -164,6 +164,9 @@ void CodeGenTarget::ReadRegisters() const { Registers.reserve(Regs.size()); Registers.assign(Regs.begin(), Regs.end()); + // Assign the enumeration values. + for (unsigned i = 0, e = Registers.size(); i != e; ++i) + Registers[i].EnumValue = i + 1; } CodeGenRegister::CodeGenRegister(Record *R) : TheDef(R) { diff --git a/utils/TableGen/RegisterInfoEmitter.cpp b/utils/TableGen/RegisterInfoEmitter.cpp index 7857c5b411..b3a9dea3be 100644 --- a/utils/TableGen/RegisterInfoEmitter.cpp +++ b/utils/TableGen/RegisterInfoEmitter.cpp @@ -38,7 +38,10 @@ void RegisterInfoEmitter::runEnums(raw_ostream &OS) { OS << "enum {\n NoRegister,\n"; for (unsigned i = 0, e = Registers.size(); i != e; ++i) - OS << " " << Registers[i].getName() << ", \t// " << i+1 << "\n"; + OS << " " << Registers[i].getName() << " = " << + Registers[i].EnumValue << ",\n"; + assert(Registers.size() == Registers[Registers.size()-1].EnumValue && + "Register enum value mismatch!"); OS << " NUM_TARGET_REGS \t// " << Registers.size()+1 << "\n"; OS << "};\n"; if (!Namespace.empty()) |