Provide generic MCAsmParser when constructing target specific parsers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77362 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/llvm-mc/AsmParser.h b/tools/llvm-mc/AsmParser.h
index dd60338..253bb8b 100644
--- a/tools/llvm-mc/AsmParser.h
+++ b/tools/llvm-mc/AsmParser.h
@@ -27,7 +27,7 @@
 class TargetAsmParser;
 class Twine;
 
-class AsmParser : MCAsmParser {
+class AsmParser : public MCAsmParser {
 public:
   struct X86Operand;
 
@@ -35,18 +35,18 @@
   AsmLexer Lexer;
   MCContext &Ctx;
   MCStreamer &Out;
-  TargetAsmParser &TargetParser;
+  TargetAsmParser *TargetParser;
   
 public:
-  AsmParser(SourceMgr &_SM, MCContext &_Ctx, MCStreamer &_Out, 
-            TargetAsmParser &_TargetParser)
-    : Lexer(_SM), Ctx(_Ctx), Out(_Out), TargetParser(_TargetParser) {}
+  AsmParser(SourceMgr &_SM, MCContext &_Ctx, MCStreamer &_Out)
+    : Lexer(_SM), Ctx(_Ctx), Out(_Out), TargetParser(0) {}
   ~AsmParser() {}
-  
+
   bool Run();
   
 public:
-  TargetAsmParser &getTargetParser() const { return TargetParser; }
+  TargetAsmParser &getTargetParser() const { return *TargetParser; }
+  void setTargetParser(TargetAsmParser &P) { TargetParser = &P; }
 
   virtual MCAsmLexer &getLexer() { return Lexer; }