From 78f26e72105d5d2e7a6e36445aa8045205b0fda2 Mon Sep 17 00:00:00 2001 From: Oliver Stannard Date: Fri, 17 Mar 2017 11:10:17 +0000 Subject: [PATCH] [Asm] Don't list '@' in diag when '@' is a comment This fixes https://bugs.llvm.org//show_bug.cgi?id=31280 Differential revision: https://reviews.llvm.org/D31026 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298067 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/MC/MCParser/ELFAsmParser.cpp | 8 ++++++-- test/MC/ELF/ARM/gnu-type-hash-diagnostics.s | 4 ++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/MC/MCParser/ELFAsmParser.cpp b/lib/MC/MCParser/ELFAsmParser.cpp index 4ac16615ceb..337cf16e865 100644 --- a/lib/MC/MCParser/ELFAsmParser.cpp +++ b/lib/MC/MCParser/ELFAsmParser.cpp @@ -391,8 +391,12 @@ bool ELFAsmParser::maybeParseSectionType(StringRef &TypeName) { return false; Lex(); if (L.isNot(AsmToken::At) && L.isNot(AsmToken::Percent) && - L.isNot(AsmToken::String)) - return TokError("expected '@', '%' or \"\""); + L.isNot(AsmToken::String)) { + if (L.getAllowAtInIdentifier()) + return TokError("expected '@', '%' or \"\""); + else + return TokError("expected '%' or \"\""); + } if (!L.is(AsmToken::String)) Lex(); if (L.is(AsmToken::Integer)) { diff --git a/test/MC/ELF/ARM/gnu-type-hash-diagnostics.s b/test/MC/ELF/ARM/gnu-type-hash-diagnostics.s index eb364755c4d..7dc656d5a4d 100644 --- a/test/MC/ELF/ARM/gnu-type-hash-diagnostics.s +++ b/test/MC/ELF/ARM/gnu-type-hash-diagnostics.s @@ -7,3 +7,7 @@ // CHECK: .type TYPE #32 // CHECK: ^ + // For ARM, the comment character is '@', so we don't list '@' as a + // valid option. + .section "foo", "a", @progbits +// CHECK: error: expected '%' or "" -- 2.50.1