diff options
-rw-r--r-- | llvm/lib/MC/MCParser/ELFAsmParser.cpp | 8 | ||||
-rw-r--r-- | llvm/test/MC/ELF/ARM/gnu-type-hash-diagnostics.s | 4 |
2 files changed, 10 insertions, 2 deletions
diff --git a/llvm/lib/MC/MCParser/ELFAsmParser.cpp b/llvm/lib/MC/MCParser/ELFAsmParser.cpp index 4ac16615ceb..337cf16e865 100644 --- a/llvm/lib/MC/MCParser/ELFAsmParser.cpp +++ b/llvm/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 '@<type>', '%<type>' or \"<type>\""); + L.isNot(AsmToken::String)) { + if (L.getAllowAtInIdentifier()) + return TokError("expected '@<type>', '%<type>' or \"<type>\""); + else + return TokError("expected '%<type>' or \"<type>\""); + } if (!L.is(AsmToken::String)) Lex(); if (L.is(AsmToken::Integer)) { diff --git a/llvm/test/MC/ELF/ARM/gnu-type-hash-diagnostics.s b/llvm/test/MC/ELF/ARM/gnu-type-hash-diagnostics.s index eb364755c4d..7dc656d5a4d 100644 --- a/llvm/test/MC/ELF/ARM/gnu-type-hash-diagnostics.s +++ b/llvm/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 '@<type>' as a + // valid option. + .section "foo", "a", @progbits +// CHECK: error: expected '%<type>' or "<type>" |