[llvm-commits] CVS: llvm/utils/TableGen/InstrInfoEmitter.cpp RegisterInfoEmitter.cpp
Jim Laskey
jlaskey at apple.com
Fri Jul 21 13:57:48 PDT 2006
Changes in directory llvm/utils/TableGen:
InstrInfoEmitter.cpp updated: 1.43 -> 1.44
RegisterInfoEmitter.cpp updated: 1.47 -> 1.48
---
Log message:
Use an enumeration to eliminate data relocations.
---
Diffs of the changes: (+12 -2)
InstrInfoEmitter.cpp | 2 +-
RegisterInfoEmitter.cpp | 12 +++++++++++-
2 files changed, 12 insertions(+), 2 deletions(-)
Index: llvm/utils/TableGen/InstrInfoEmitter.cpp
diff -u llvm/utils/TableGen/InstrInfoEmitter.cpp:1.43 llvm/utils/TableGen/InstrInfoEmitter.cpp:1.44
--- llvm/utils/TableGen/InstrInfoEmitter.cpp:1.43 Thu Jun 15 02:22:16 2006
+++ llvm/utils/TableGen/InstrInfoEmitter.cpp Fri Jul 21 15:57:35 2006
@@ -137,7 +137,7 @@
Record *RC = OperandInfo[i];
// FIXME: We only care about register operands for now.
if (RC && RC->isSubClassOf("RegisterClass"))
- OS << "{ &" << getQualifiedName(RC) << "RegClass, 0 }, ";
+ OS << "{ " << getQualifiedName(RC) << "RegClassID, 0 }, ";
else if (RC && RC->getName() == "ptr_rc")
// Ptr value whose register class is resolved via callback.
OS << "{ 0, 1 }, ";
Index: llvm/utils/TableGen/RegisterInfoEmitter.cpp
diff -u llvm/utils/TableGen/RegisterInfoEmitter.cpp:1.47 llvm/utils/TableGen/RegisterInfoEmitter.cpp:1.48
--- llvm/utils/TableGen/RegisterInfoEmitter.cpp:1.47 Wed Jul 19 00:58:18 2006
+++ llvm/utils/TableGen/RegisterInfoEmitter.cpp Fri Jul 21 15:57:35 2006
@@ -68,6 +68,15 @@
if (!RegisterClasses.empty()) {
OS << "namespace " << RegisterClasses[0].Namespace
<< " { // Register classes\n";
+
+ OS << " enum {\n";
+ for (unsigned i = 0, e = RegisterClasses.size(); i != e; ++i) {
+ if (i) OS << ",\n";
+ OS << " " << RegisterClasses[i].getName() << "RegClassID";
+ if (!i) OS << " = 1";
+ }
+ OS << "\n };\n\n";
+
for (unsigned i = 0, e = RegisterClasses.size(); i != e; ++i) {
const std::string &Name = RegisterClasses[i].getName();
@@ -165,7 +174,7 @@
for (unsigned i = 0, e = RegisterClasses.size(); i != e; ++i)
OS << " " << RegisterClasses[i].getName() << "Class\t"
<< RegisterClasses[i].getName() << "RegClass;\n";
-
+
std::map<unsigned, std::set<unsigned> > SuperClassMap;
OS << "\n";
// Emit the sub-classes array for each RegisterClass
@@ -244,6 +253,7 @@
OS << RC.MethodBodies << "\n";
OS << RC.getName() << "Class::" << RC.getName()
<< "Class() : TargetRegisterClass("
+ << RC.getName() + "RegClassID" << ", "
<< RC.getName() + "VTs" << ", "
<< RC.getName() + "Subclasses" << ", "
<< RC.getName() + "Superclasses" << ", "
More information about the llvm-commits
mailing list