[llvm] r327262 - MC intel asm parser: Allow @ at the start of function names.

Nico Weber via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 12 05:47:27 PDT 2018


Author: nico
Date: Mon Mar 12 05:47:27 2018
New Revision: 327262

URL: http://llvm.org/viewvc/llvm-project?rev=327262&view=rev
Log:
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

Modified:
    llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp
    llvm/trunk/test/MC/COFF/tricky-names.ll

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=327262&r1=327261&r2=327262&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp (original)
+++ llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp Mon Mar 12 05:47:27 2018
@@ -1383,6 +1383,7 @@ bool X86AsmParser::ParseIntelExpression(
       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(
       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(
         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))

Modified: llvm/trunk/test/MC/COFF/tricky-names.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/COFF/tricky-names.ll?rev=327262&r1=327261&r2=327262&view=diff
==============================================================================
--- llvm/trunk/test/MC/COFF/tricky-names.ll (original)
+++ llvm/trunk/test/MC/COFF/tricky-names.ll Mon Mar 12 05:47:27 2018
@@ -1,8 +1,11 @@
 ; Check how tricky symbols are printed in the asm output.
 ; RUN: llc -mtriple=i686-pc-win32 %s -o - | FileCheck %s --check-prefix=ASM
+; RUN: llc -mtriple=i686-pc-win32 %s -x86-asm-syntax=intel -o - | FileCheck %s --check-prefix=ASM
 
-; Check that we can roundtrip these names through our assembler.
+; Check that we can roundtrip these names through our assembler,
+; in both at&t and intel syntax.
 ; RUN: llc -mtriple=i686-pc-win32 %s -o - | llvm-mc -triple i686-pc-win32 -filetype=obj | llvm-readobj -t | FileCheck %s --check-prefix=READOBJ
+; RUN: llc -mtriple=i686-pc-win32 -x86-asm-syntax=intel %s -o - | llvm-mc -triple i686-pc-win32 -filetype=obj | llvm-readobj -t | FileCheck %s --check-prefix=READOBJ
 
 
 @"\01??__E_Generic_object@?$_Error_objects at H@std@@YAXXZ" = global i32 0




More information about the llvm-commits mailing list