diff options
author | Andrew V. Tischenko <andrew.v.tischenko@gmail.com> | 2017-05-26 13:23:34 +0000 |
---|---|---|
committer | Andrew V. Tischenko <andrew.v.tischenko@gmail.com> | 2017-05-26 13:23:34 +0000 |
commit | fdb264e2635c6b02e7543f6a4bac675e62275696 (patch) | |
tree | 9b71db47d93f00ca3ea2d45e892d1fde1d4a9c24 /llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp | |
parent | a8403a64ea97974bd23d9f463a02f7df62130ccc (diff) | |
download | bcm5719-llvm-fdb264e2635c6b02e7543f6a4bac675e62275696.tar.gz bcm5719-llvm-fdb264e2635c6b02e7543f6a4bac675e62275696.zip |
The fix for PR22004: X86AsmParser.cpp asserts: OperandStack.size() > 1 && "Too few operands."
llvm-svn: 303985
Diffstat (limited to 'llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp')
-rw-r--r-- | llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp index 32ab475f118..e5d3209ec6a 100644 --- a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -1316,16 +1316,17 @@ bool X86AsmParser::ParseIntelExpression(IntelExprStateMachine &SM, SMLoc &End) { 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()) { |