summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/MC/MCParser/ELFAsmParser.cpp8
-rw-r--r--llvm/test/MC/ELF/ARM/gnu-type-hash-diagnostics.s4
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>"
OpenPOWER on IntegriCloud