ARM: improve caret diagnostics for invalid FPU name
authorSaleem Abdulrasool <compnerd@compnerd.org>
Fri, 30 Jan 2015 18:42:10 +0000 (18:42 +0000)
committerSaleem Abdulrasool <compnerd@compnerd.org>
Fri, 30 Jan 2015 18:42:10 +0000 (18:42 +0000)
In the case of an invalid FPU name, place the caret at the name rather than FPU
directive.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227595 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/AsmParser/ARMAsmParser.cpp
test/MC/ARM/directive-fpu-diagnostics.s [new file with mode: 0644]

index 96f3b4e64326c0de156fac6d46d28f5bd4c9f533..2de0ffa5ec6490512b31a2005c8cbe1e8deff147 100644 (file)
@@ -9229,6 +9229,7 @@ static const struct {
 /// parseDirectiveFPU
 ///  ::= .fpu str
 bool ARMAsmParser::parseDirectiveFPU(SMLoc L) {
+  SMLoc FPUNameLoc = getTok().getLoc();
   StringRef FPU = getParser().parseStringToEndOfStatement().trim();
 
   unsigned ID = StringSwitch<unsigned>(FPU)
@@ -9237,7 +9238,7 @@ bool ARMAsmParser::parseDirectiveFPU(SMLoc L) {
     .Default(ARM::INVALID_FPU);
 
   if (ID == ARM::INVALID_FPU) {
-    Error(L, "Unknown FPU name");
+    Error(FPUNameLoc, "Unknown FPU name");
     return false;
   }
 
diff --git a/test/MC/ARM/directive-fpu-diagnostics.s b/test/MC/ARM/directive-fpu-diagnostics.s
new file mode 100644 (file)
index 0000000..67c6129
--- /dev/null
@@ -0,0 +1,10 @@
+@ RUN: not llvm-mc -triple armv7 -filetype asm -o /dev/null %s 2>&1 \
+@ RUN:     | FileCheck %s -strict-whitespace
+
+       .text
+       .thumb
+
+       .fpu invalid
+@ CHECK: error: Unknown FPU name
+@ CHECK: .fpu invalid
+@ CHECK:      ^