[llvm-commits] CVS: llvm/utils/TableGen/CodeGenRegisters.h CodeGenTarget.cpp RegisterInfoEmitter.cpp

Chris Lattner lattner at cs.uiuc.edu
Sat Aug 21 12:21:32 PDT 2004



Changes in directory llvm/utils/TableGen:

CodeGenRegisters.h updated: 1.3 -> 1.4
CodeGenTarget.cpp updated: 1.18 -> 1.19
RegisterInfoEmitter.cpp updated: 1.21 -> 1.22
---
Log message:

Support "Methods" in register classes in CodgeGenRegisterClass


---
Diffs of the changes:  (+10 -11)

Index: llvm/utils/TableGen/CodeGenRegisters.h
diff -u llvm/utils/TableGen/CodeGenRegisters.h:1.3 llvm/utils/TableGen/CodeGenRegisters.h:1.4
--- llvm/utils/TableGen/CodeGenRegisters.h:1.3	Fri Aug 20 23:05:00 2004
+++ llvm/utils/TableGen/CodeGenRegisters.h	Sat Aug 21 14:21:21 2004
@@ -26,7 +26,6 @@
     Record *TheDef;
     const std::string &getName() const;
     unsigned DeclaredSpillSize, DeclaredSpillAlignment;
-    
     CodeGenRegister(Record *R);
   };
 
@@ -36,6 +35,7 @@
     std::vector<Record*> Elements;
     unsigned SpillSize;
     unsigned SpillAlignment;
+    std::string MethodDefinitions;
 
     const std::string &getName() const;
 


Index: llvm/utils/TableGen/CodeGenTarget.cpp
diff -u llvm/utils/TableGen/CodeGenTarget.cpp:1.18 llvm/utils/TableGen/CodeGenTarget.cpp:1.19
--- llvm/utils/TableGen/CodeGenTarget.cpp:1.18	Fri Aug 20 23:05:00 2004
+++ llvm/utils/TableGen/CodeGenTarget.cpp	Sat Aug 21 14:21:21 2004
@@ -135,6 +135,12 @@
   SpillSize = R->getValueAsInt("Size");
   SpillAlignment = R->getValueAsInt("Alignment");
 
+  if (CodeInit *CI = dynamic_cast<CodeInit*>(R->getValueInit("Methods")))
+    MethodDefinitions = CI->getValue();
+  else
+    throw "Expected 'code' fragment for 'Methods' value in register class '"+
+          getName() + "'!";
+
   ListInit *RegList = R->getValueAsListInit("MemberList");
   for (unsigned i = 0, e = RegList->getSize(); i != e; ++i) {
     DefInit *RegDef = dynamic_cast<DefInit*>(RegList->getElement(i));


Index: llvm/utils/TableGen/RegisterInfoEmitter.cpp
diff -u llvm/utils/TableGen/RegisterInfoEmitter.cpp:1.21 llvm/utils/TableGen/RegisterInfoEmitter.cpp:1.22
--- llvm/utils/TableGen/RegisterInfoEmitter.cpp:1.21	Fri Aug 20 23:05:00 2004
+++ llvm/utils/TableGen/RegisterInfoEmitter.cpp	Sat Aug 21 14:21:21 2004
@@ -121,16 +121,9 @@
     OS << "  struct " << Name << "Class : public TargetRegisterClass {\n"
        << "    " << Name << "Class() : TargetRegisterClass("
        << RC.SpillSize/8 << ", " << RC.SpillAlignment << ", " << Name << ", "
-       << Name << " + " << RC.Elements.size() << ") {}\n";
-    
-    if (CodeInit *CI =
-        dynamic_cast<CodeInit*>(RC.TheDef->getValueInit("Methods")))
-      OS << CI->getValue();
-    else
-      throw "Expected 'code' fragment for 'Methods' value in register class '"+
-            RC.getName() + "'!";
-
-    OS << "  } " << Name << "Instance;\n\n";
+       << Name << " + " << RC.Elements.size() << ") {}\n"
+       << RC.MethodDefinitions
+       << "  } " << Name << "Instance;\n\n";
   }
 
   OS << "  const TargetRegisterClass* const RegisterClasses[] = {\n";






More information about the llvm-commits mailing list