[llvm] r303985 - The fix for PR22004: X86AsmParser.cpp asserts: OperandStack.size() > 1 && "Too few operands."

Andrew V. Tischenko via llvm-commits llvm-commits at lists.llvm.org
Fri May 26 06:23:34 PDT 2017


Author: avt77
Date: Fri May 26 08:23:34 2017
New Revision: 303985

URL: http://llvm.org/viewvc/llvm-project?rev=303985&view=rev
Log:
The fix for PR22004: X86AsmParser.cpp asserts: OperandStack.size() > 1 && "Too few operands."

Added:
    llvm/trunk/test/MC/X86/pr22004.s
Modified:
    llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp

Modified: llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp?rev=303985&r1=303984&r2=303985&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp (original)
+++ llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp Fri May 26 08:23:34 2017
@@ -1316,16 +1316,17 @@ bool X86AsmParser::ParseIntelExpression(
   while (!Done) {
     bool UpdateLocLex = true;
 
+    AsmToken::TokenKind TK = getLexer().getKind();
     // The period in the dot operator (e.g., [ebx].foo.bar) is parsed as an
     // identifier.  Don't try an parse it as a register.
-    if (PrevTK != AsmToken::Error && Tok.getString().startswith("."))
+    if (PrevTK != AsmToken::Error && Tok.getString().startswith(".") &&
+        TK != AsmToken::Identifier)
       break;
 
     // If we're parsing an immediate expression, we don't expect a '['.
     if (SM.getStopOnLBrac() && getLexer().getKind() == AsmToken::LBrac)
       break;
 
-    AsmToken::TokenKind TK = getLexer().getKind();
     switch (TK) {
     default: {
       if (SM.isValidEndState()) {

Added: llvm/trunk/test/MC/X86/pr22004.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/X86/pr22004.s?rev=303985&view=auto
==============================================================================
--- llvm/trunk/test/MC/X86/pr22004.s (added)
+++ llvm/trunk/test/MC/X86/pr22004.s Fri May 26 08:23:34 2017
@@ -0,0 +1,3 @@
+// RUN: llvm-mc -triple x86_64-unknown-unknown -x86-asm-syntax=intel %s
+
+lea rax, qword ptr [rip + .L.str]




More information about the llvm-commits mailing list