[TableGen] Move a couple virtual methods out of line so vtable anchors can be removed...
authorCraig Topper <craig.topper@gmail.com>
Mon, 1 Jun 2015 06:44:18 +0000 (06:44 +0000)
committerCraig Topper <craig.topper@gmail.com>
Mon, 1 Jun 2015 06:44:18 +0000 (06:44 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238727 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/TableGen/Record.h
lib/TableGen/Record.cpp

index 16932a2..eada90d 100644 (file)
@@ -139,7 +139,6 @@ class StringRecTy : public RecTy {
   static StringRecTy Shared;
   StringRecTy() : RecTy(StringRecTyKind) {}
 
-  virtual void anchor();
 public:
   static bool classof(const RecTy *RT) {
     return RT->getRecTyKind() == StringRecTyKind;
@@ -147,7 +146,7 @@ public:
 
   static StringRecTy *get() { return &Shared; }
 
-  std::string getAsString() const override { return "string"; }
+  std::string getAsString() const override;
 };
 
 /// ListRecTy - 'list<Ty>' - Represent a list of values, all of which must be of
@@ -177,7 +176,6 @@ class DagRecTy : public RecTy {
   static DagRecTy Shared;
   DagRecTy() : RecTy(DagRecTyKind) {}
 
-  virtual void anchor();
 public:
   static bool classof(const RecTy *RT) {
     return RT->getRecTyKind() == DagRecTyKind;
@@ -185,7 +183,7 @@ public:
 
   static DagRecTy *get() { return &Shared; }
 
-  std::string getAsString() const override { return "dag"; }
+  std::string getAsString() const override;
 };
 
 /// RecordRecTy - '[classname]' - Represent an instance of a class, such as:
index 6c7a66f..3097c4e 100644 (file)
@@ -88,9 +88,6 @@ DagRecTy DagRecTy::Shared;
 
 void RecTy::dump() const { print(errs()); }
 
-void StringRecTy::anchor() { }
-void DagRecTy::anchor() { }
-
 ListRecTy *RecTy::getListTy() {
   if (!ListTy)
     ListTy.reset(new ListRecTy(this));
@@ -136,6 +133,9 @@ bool IntRecTy::typeIsConvertibleTo(const RecTy *RHS) const {
   return kind==BitRecTyKind || kind==BitsRecTyKind || kind==IntRecTyKind;
 }
 
+std::string StringRecTy::getAsString() const {
+  return "string";
+}
 
 std::string ListRecTy::getAsString() const {
   return "list<" + Ty->getAsString() + ">";
@@ -147,6 +147,10 @@ bool ListRecTy::typeIsConvertibleTo(const RecTy *RHS) const {
   return false;
 }
 
+std::string DagRecTy::getAsString() const {
+  return "dag";
+}
+
 RecordRecTy *RecordRecTy::get(Record *R) {
   return dyn_cast<RecordRecTy>(R->getDefInit()->getType());
 }