diff --git a/include/llvm/MC/MCAsmLexer.h b/include/llvm/MC/MCAsmLexer.h
index da471d2..e9a6e3f 100644
--- a/include/llvm/MC/MCAsmLexer.h
+++ b/include/llvm/MC/MCAsmLexer.h
@@ -20,7 +20,8 @@
 class Target;
 
 /// AsmToken - Target independent representation for an assembler token.
-struct AsmToken {
+class AsmToken {
+public:
   enum TokenKind {
     // Markers
     Eof, Error,
diff --git a/include/llvm/MC/MCParsedAsmOperand.h b/include/llvm/MC/MCParsedAsmOperand.h
index 7c9e9e6..847ab43 100644
--- a/include/llvm/MC/MCParsedAsmOperand.h
+++ b/include/llvm/MC/MCParsedAsmOperand.h
@@ -18,8 +18,8 @@
 /// between parsing an asm instruction and recognizing it.
 class MCParsedAsmOperand {
 public:  
-  MCParsedAsmOperand();
-  virtual ~MCParsedAsmOperand() = 0;
+  MCParsedAsmOperand() {}
+  virtual ~MCParsedAsmOperand() {}
   // TODO: Out of line vfun.
 };
 
diff --git a/include/llvm/Target/TargetAsmParser.h b/include/llvm/Target/TargetAsmParser.h
index ef1fc49..a265610 100644
--- a/include/llvm/Target/TargetAsmParser.h
+++ b/include/llvm/Target/TargetAsmParser.h
@@ -10,13 +10,13 @@
 #ifndef LLVM_TARGET_TARGETPARSER_H
 #define LLVM_TARGET_TARGETPARSER_H
 
-#include "llvm/MC/MCAsmLexer.h"
-
 namespace llvm {
 class MCAsmParser;
 class MCInst;
 class StringRef;
 class Target;
+class SMLoc;
+class AsmToken;
 
 /// TargetAsmParser - Generic interface to target specific assembly parsers.
 class TargetAsmParser {
@@ -45,7 +45,8 @@
   /// \param Name - The instruction name.
   /// \param Inst [out] - On success, the parsed instruction.
   /// \return True on failure.
-  virtual bool ParseInstruction(const StringRef &Name, MCInst &Inst) = 0;
+  virtual bool ParseInstruction(const StringRef &Name, SMLoc NameLoc,
+                                MCInst &Inst) = 0;
 
   /// ParseDirective - Parse a target specific assembler directive
   ///
diff --git a/lib/Target/ARM/AsmParser/ARMAsmParser.cpp b/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
index db77685..9288384 100644
--- a/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
+++ b/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
@@ -95,7 +95,8 @@
   ARMAsmParser(const Target &T, MCAsmParser &_Parser)
     : TargetAsmParser(T), Parser(_Parser) {}
 
-  virtual bool ParseInstruction(const StringRef &Name, MCInst &Inst);
+  virtual bool ParseInstruction(const StringRef &Name, SMLoc NameLoc,
+                                MCInst &Inst);
 
   virtual bool ParseDirective(AsmToken DirectiveID);
 };
@@ -579,7 +580,8 @@
 }
 
 /// Parse an arm instruction mnemonic followed by its operands.
-bool ARMAsmParser::ParseInstruction(const StringRef &Name, MCInst &Inst) {
+bool ARMAsmParser::ParseInstruction(const StringRef &Name, SMLoc NameLoc,
+                                    MCInst &Inst) {
   SmallVector<ARMOperand, 7> Operands;
 
   Operands.push_back(ARMOperand::CreateToken(Name));
diff --git a/lib/Target/X86/AsmParser/X86AsmParser.cpp b/lib/Target/X86/AsmParser/X86AsmParser.cpp
index 1237c45..d431aa6 100644
--- a/lib/Target/X86/AsmParser/X86AsmParser.cpp
+++ b/lib/Target/X86/AsmParser/X86AsmParser.cpp
@@ -60,7 +60,8 @@
   X86ATTAsmParser(const Target &T, MCAsmParser &_Parser)
     : TargetAsmParser(T), Parser(_Parser) {}
 
-  virtual bool ParseInstruction(const StringRef &Name, MCInst &Inst);
+  virtual bool ParseInstruction(const StringRef &Name, SMLoc NameLoc,
+                                MCInst &Inst);
 
   virtual bool ParseDirective(AsmToken DirectiveID);
 };
@@ -401,7 +402,8 @@
   return false;
 }
 
-bool X86ATTAsmParser::ParseInstruction(const StringRef &Name, MCInst &Inst) {
+bool X86ATTAsmParser::ParseInstruction(const StringRef &Name,
+                                       SMLoc NameLoc, MCInst &Inst) {
   SmallVector<X86Operand, 8> Operands;
 
   Operands.push_back(X86Operand::CreateToken(Name));
diff --git a/tools/llvm-mc/AsmParser.cpp b/tools/llvm-mc/AsmParser.cpp
index 1204a00..4ef3a7f 100644
--- a/tools/llvm-mc/AsmParser.cpp
+++ b/tools/llvm-mc/AsmParser.cpp
@@ -711,7 +711,7 @@
   }
 
   MCInst Inst;
-  if (getTargetParser().ParseInstruction(IDVal, Inst))
+  if (getTargetParser().ParseInstruction(IDVal, IDLoc, Inst))
     return true;
   
   if (Lexer.isNot(AsmToken::EndOfStatement))
