diff options
author | Nico Weber <nicolasweber@gmx.de> | 2018-03-12 12:47:27 +0000 |
---|---|---|
committer | Nico Weber <nicolasweber@gmx.de> | 2018-03-12 12:47:27 +0000 |
commit | 73a699e5925b1294ef9db1902b8eb840ef86443f (patch) | |
tree | 1f0a645311da0e74693159a0ee9f075ee58825a8 /llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp | |
parent | f06ae4f3b4b21b9373f5be45e6fb440d3d142cb1 (diff) | |
download | bcm5719-llvm-73a699e5925b1294ef9db1902b8eb840ef86443f.tar.gz bcm5719-llvm-73a699e5925b1294ef9db1902b8eb840ef86443f.zip |
MC intel asm parser: Allow @ at the start of function names.
Ports parts of r193000 to the intel parser. Fixes part of PR36676.
https://reviews.llvm.org/D44359
llvm-svn: 327262
Diffstat (limited to 'llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp')
-rw-r--r-- | llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp index 7b46eec12d0..2e45d9eee12 100644 --- a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -1383,6 +1383,7 @@ bool X86AsmParser::ParseIntelExpression(IntelExprStateMachine &SM, SMLoc &End) { if (ParseIntelDotOperator(SM, End)) return true; break; + case AsmToken::At: case AsmToken::String: case AsmToken::Identifier: { SMLoc IdentLoc = Tok.getLoc(); @@ -1390,7 +1391,7 @@ bool X86AsmParser::ParseIntelExpression(IntelExprStateMachine &SM, SMLoc &End) { UpdateLocLex = false; // Register unsigned Reg; - if (Tok.isNot(AsmToken::String) && !ParseRegister(Reg, IdentLoc, End)) { + if (Tok.is(AsmToken::Identifier) && !ParseRegister(Reg, IdentLoc, End)) { if (SM.onRegister(Reg, ErrMsg)) return Error(Tok.getLoc(), ErrMsg); break; @@ -1428,6 +1429,9 @@ bool X86AsmParser::ParseIntelExpression(IntelExprStateMachine &SM, SMLoc &End) { break; } // MS InlineAsm identifier + // Call parseIdentifier() to combine @ with the identifier behind it. + if (TK == AsmToken::At && Parser.parseIdentifier(Identifier)) + return Error(IdentLoc, "expected identifier"); if (ParseIntelInlineAsmIdentifier(Val, Identifier, Info, false, End)) return true; else if (SM.onIdentifierExpr(Val, Identifier, Info, true, ErrMsg)) |