diff --git a/lib/MC/MCParser/AsmParser.cpp b/lib/MC/MCParser/AsmParser.cpp index dba543b6833..a1d016261f5 100644 --- a/lib/MC/MCParser/AsmParser.cpp +++ b/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/test/MC/AsmParser/variant-diagnostics-2.s b/test/MC/AsmParser/variant-diagnostics-2.s new file mode 100644 index 00000000000..bf6a7c772b4 --- /dev/null +++ b/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/test/MC/AsmParser/variant-diagnostics.s b/test/MC/AsmParser/variant-diagnostics.s new file mode 100644 index 00000000000..535ee2686f1 --- /dev/null +++ b/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: ^ +