Implement multiclass inheritance.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69810 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/utils/TableGen/TGParser.h b/utils/TableGen/TGParser.h
index b04139f..2979d0e 100644
--- a/utils/TableGen/TGParser.h
+++ b/utils/TableGen/TGParser.h
@@ -25,6 +25,7 @@
   struct Init;
   struct MultiClass;
   struct SubClassReference;
+  struct SubMultiClassReference;
   
   struct LetRecord {
     std::string Name;
@@ -46,7 +47,6 @@
   /// current value.
   MultiClass *CurMultiClass;
 public:
-  
   TGParser(TGSourceMgr &SrcMgr) : Lex(SrcMgr), CurMultiClass(0) {}
   
   void setIncludeDirs(const std::vector<std::string> &D){Lex.setIncludeDirs(D);}
@@ -67,6 +67,7 @@
   bool SetValue(Record *TheRec, TGLoc Loc, const std::string &ValName, 
                 const std::vector<unsigned> &BitList, Init *V);
   bool AddSubClass(Record *Rec, SubClassReference &SubClass);
+  bool AddSubMultiClass(MultiClass *MV, class SubMultiClassReference &SubMultiClass);
 
 private:  // Parser methods.
   bool ParseObjectList();
@@ -87,6 +88,7 @@
   std::string ParseDeclaration(Record *CurRec, bool ParsingTemplateArgs);
 
   SubClassReference ParseSubClassReference(Record *CurRec, bool isDefm);
+  SubMultiClassReference ParseSubMultiClassReference(MultiClass *CurMultiClass);
 
   Init *ParseIDValue(Record *CurRec);
   Init *ParseIDValue(Record *CurRec, const std::string &Name, TGLoc NameLoc);
@@ -101,6 +103,7 @@
   RecTy *ParseType();
   std::string ParseObjectName();
   Record *ParseClassID();
+  MultiClass *ParseMultiClassID();
   Record *ParseDefmID();
 };