"This adds a getName() method to TargetRegisterClass, just like in TargetRegisterInfo.
authorChris Lattner <sabre@nondot.org>
Fri, 3 Apr 2009 20:25:41 +0000 (20:25 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 3 Apr 2009 20:25:41 +0000 (20:25 +0000)
This makes debugging register classes a bit easier."

Patch by Jakob Stoklund Olesen!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68400 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Target/TargetRegisterInfo.h
utils/TableGen/RegisterInfoEmitter.cpp

index 6de4f73ed0bd3b57a3ab9d20fe8d4d6dacb9a4ab..dd3e056f303a801b197554402afe11047b64c84e 100644 (file)
@@ -56,6 +56,7 @@ public:
   typedef const TargetRegisterClass* const * sc_iterator;
 private:
   unsigned ID;
+  const char *Name;
   bool  isSubClass;
   const vt_iterator VTs;
   const sc_iterator SubClasses;
@@ -65,19 +66,24 @@ private:
   const iterator RegsBegin, RegsEnd;
 public:
   TargetRegisterClass(unsigned id,
+                      const char *name,
                       const MVT *vts,
                       const TargetRegisterClass * const *subcs,
                       const TargetRegisterClass * const *supcs,
                       unsigned RS, unsigned Al, int CC,
                       iterator RB, iterator RE)
-    : ID(id), VTs(vts), SubClasses(subcs), SuperClasses(supcs),
+    : ID(id), Name(name), VTs(vts), SubClasses(subcs), SuperClasses(supcs),
     RegSize(RS), Alignment(Al), CopyCost(CC), RegsBegin(RB), RegsEnd(RE) {}
   virtual ~TargetRegisterClass() {}     // Allow subclasses
   
   /// getID() - Return the register class ID number.
   ///
   unsigned getID() const { return ID; }
-  
+
+  /// getName() - Return the register class name for debugging.
+  ///
+  const char *getName() const { return Name; }
+
   /// begin/end - Return all of the registers in this class.
   ///
   iterator       begin() const { return RegsBegin; }
index 67d1cfcf4d3438bbf58054f7da011ae453fc4726..56c002054bc6b3039d80c44390ac6340ab4b8f66 100644 (file)
@@ -319,6 +319,7 @@ void RegisterInfoEmitter::run(std::ostream &OS) {
       OS << RC.getName() << "Class::" << RC.getName() 
          << "Class()  : TargetRegisterClass("
          << RC.getName() + "RegClassID" << ", "
+         << '\"' << RC.getName() << "\", "
          << RC.getName() + "VTs" << ", "
          << RC.getName() + "Subclasses" << ", "
          << RC.getName() + "Superclasses" << ", "