<div dir="ltr">And here is yet another commit that you landed without getting an LGTM from anyone.<br><br><div class="gmail_quote"><div dir="ltr">On Sun, Nov 8, 2015 at 4:18 PM Colin LeMahieu via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This revision was automatically updated to reflect the committed changes.<br>
Closed by commit rL252435: [AsmParser] Provide target direct access to mnemonic token.  Allow assignment… (authored by colinl).<br>
<br>
Changed prior to commit:<br>
  <a href="http://reviews.llvm.org/D14255?vs=38961&id=39657#toc" rel="noreferrer" target="_blank">http://reviews.llvm.org/D14255?vs=38961&id=39657#toc</a><br>
<br>
Repository:<br>
  rL LLVM<br>
<br>
<a href="http://reviews.llvm.org/D14255" rel="noreferrer" target="_blank">http://reviews.llvm.org/D14255</a><br>
<br>
Files:<br>
  llvm/trunk/include/llvm/MC/MCTargetAsmParser.h<br>
  llvm/trunk/lib/MC/MCParser/AsmParser.cpp<br>
<br>
Index: llvm/trunk/include/llvm/MC/MCTargetAsmParser.h<br>
===================================================================<br>
--- llvm/trunk/include/llvm/MC/MCTargetAsmParser.h<br>
+++ llvm/trunk/include/llvm/MC/MCTargetAsmParser.h<br>
@@ -143,6 +143,10 @@<br>
   /// \return True on failure.<br>
   virtual bool ParseInstruction(ParseInstructionInfo &Info, StringRef Name,<br>
                                 SMLoc NameLoc, OperandVector &Operands) = 0;<br>
+  virtual bool ParseInstruction(ParseInstructionInfo &Info, StringRef Name,<br>
+                                AsmToken Token, OperandVector &Operands) {<br>
+    return ParseInstruction(Info, Name, Token.getLoc(), Operands);<br>
+  }<br>
<br>
   /// ParseDirective - Parse a target specific assembler directive<br>
   ///<br>
@@ -192,6 +196,11 @@<br>
   virtual void convertToMapAndConstraints(unsigned Kind,<br>
                                           const OperandVector &Operands) = 0;<br>
<br>
+  // Return whether this parser uses assignment statements with equals tokens<br>
+  virtual bool equalIsAsmAssignment() { return true; };<br>
+  // Return whether this start of statement identifier is a label<br>
+  virtual bool isLabel(AsmToken &Token) { return true; };<br>
+<br>
   virtual const MCExpr *applyModifierToExpr(const MCExpr *E,<br>
                                             MCSymbolRefExpr::VariantKind,<br>
                                             MCContext &Ctx) {<br>
Index: llvm/trunk/lib/MC/MCParser/AsmParser.cpp<br>
===================================================================<br>
--- llvm/trunk/lib/MC/MCParser/AsmParser.cpp<br>
+++ llvm/trunk/lib/MC/MCParser/AsmParser.cpp<br>
@@ -1396,6 +1396,8 @@<br>
   // See what kind of statement we have.<br>
   switch (Lexer.getKind()) {<br>
   case AsmToken::Colon: {<br>
+    if (!getTargetParser().isLabel(ID))<br>
+      break;<br>
     checkForValidSection();<br>
<br>
     // identifier ':'   -> Label.<br>
@@ -1454,6 +1456,8 @@<br>
   }<br>
<br>
   case AsmToken::Equal:<br>
+    if (!getTargetParser().equalIsAsmAssignment())<br>
+      break;<br>
     // identifier '=' ... -> assignment statement<br>
     Lex();<br>
<br>
@@ -1701,7 +1705,7 @@<br>
   // Canonicalize the opcode to lower case.<br>
   std::string OpcodeStr = IDVal.lower();<br>
   ParseInstructionInfo IInfo(Info.AsmRewrites);<br>
-  bool HadError = getTargetParser().ParseInstruction(IInfo, OpcodeStr, IDLoc,<br>
+  bool HadError = getTargetParser().ParseInstruction(IInfo, OpcodeStr, ID,<br>
                                                      Info.ParsedOperands);<br>
   Info.ParseError = HadError;<br>
<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div></div>