https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77475

Manuel López-Ibáñez <manu at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |easyhack
                 CC|                            |manu at gcc dot gnu.org

--- Comment #1 from Manuel López-Ibáñez <manu at gcc dot gnu.org> ---
This happens when diagnostics use the implicit input_location and that is not
set correctly:

./config/i386/i386.c:4540:          error ("wrong arg %s to option %s",
curr_ran

This should use "error_at (UNKNOWN_LOCATION," or if this option can be set from
an attribute or pragma, it should pass down the correct location from the
caller.

Also, values should be quoted (and 'arg' is not English):

 error_at (loc, "wrong argument %qs to option %s", curr_range_str,

And:

Index: i386.c
===================================================================
--- i386.c      (revision 239969)
+++ i386.c      (working copy)
@@ -5480,7 +5480,7 @@
     error ("intel CPU can be used only for %stune=%s %s",
           prefix, suffix, sw);
   else if (i == pta_size)
-    error ("bad value (%s) for %sarch=%s %s",
+    error_at (loc, "bad value %qs for %sarch=%s %s",
           opts->x_ix86_arch_string, prefix, suffix, sw);

Ideally, it should also use find_closest_string, so we can say:

gcc: error: unrecognized argument 'i685' in option '-march='; did you mean
'i686' ?

See opts-common.c:cmdline_handle_error

Unfortunately, targets tend to play fast and loose with diagnostics...

Reply via email to