summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/MC/MCParser/AsmParser.cpp3
-rw-r--r--llvm/test/MC/AsmParser/variant-diagnostics-2.s11
-rw-r--r--llvm/test/MC/AsmParser/variant-diagnostics.s13
3 files changed, 26 insertions, 1 deletions
diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp
index dba543b6833..a1d016261f5 100644
--- a/llvm/lib/MC/MCParser/AsmParser.cpp
+++ b/llvm/lib/MC/MCParser/AsmParser.cpp
@@ -836,7 +836,8 @@ bool AsmParser::parsePrimaryExpr(const MCExpr *&Res, SMLoc &EndLoc) {
Variant = MCSymbolRefExpr::VK_None;
} else {
Variant = MCSymbolRefExpr::VK_None;
- return TokError("invalid variant '" + Split.second + "'");
+ return Error(SMLoc::getFromPointer(Split.second.begin()),
+ "invalid variant '" + Split.second + "'");
}
}
diff --git a/llvm/test/MC/AsmParser/variant-diagnostics-2.s b/llvm/test/MC/AsmParser/variant-diagnostics-2.s
new file mode 100644
index 00000000000..bf6a7c772b4
--- /dev/null
+++ b/llvm/test/MC/AsmParser/variant-diagnostics-2.s
@@ -0,0 +1,11 @@
+# RUN: not llvm-mc -triple i386-linux-gnu -filetype asm -o /dev/null 2>&1 %s \
+# RUN: | FileCheck %s
+
+ .text
+
+function:
+ call external@invalid
+
+# CHECK: error: invalid variant 'invalid'
+# CHECK: call external@invalid
+# CHECK: ^
diff --git a/llvm/test/MC/AsmParser/variant-diagnostics.s b/llvm/test/MC/AsmParser/variant-diagnostics.s
new file mode 100644
index 00000000000..535ee2686f1
--- /dev/null
+++ b/llvm/test/MC/AsmParser/variant-diagnostics.s
@@ -0,0 +1,13 @@
+@ RUN: not llvm-mc -triple armv7-linux-eabi -filetype asm -o /dev/null 2>&1 %s \
+@ RUN: | FileCheck %s
+
+ .arch armv7
+
+ .type invalid_variant,%function
+invalid_variant:
+ bx target(invalid)
+
+@ CHECK: error: invalid variant 'invalid'
+@ CHECK: bx target(invalid)
+@ CHECK: ^
+
OpenPOWER on IntegriCloud