]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Improve sorry message for -fzero-call-used-regs
authorTorbjörn SVENSSON <torbjorn.svensson@foss.st.com>
Thu, 15 Sep 2022 06:59:30 +0000 (08:59 +0200)
committerTorbjörn SVENSSON <torbjorn.svensson@foss.st.com>
Mon, 19 Sep 2022 11:06:58 +0000 (13:06 +0200)
When the -fzero-call-used-regs command line option is used with an
unsupported value, indicate that it's a value problem instead of an
option problem.

Without the patch, the error is:
In file included from gcc/testsuite/c-c++-common/zero-scratch-regs-8.c:5:
gcc/testsuite/c-c++-common/zero-scratch-regs-1.c: In function 'foo':
gcc/testsuite/c-c++-common/zero-scratch-regs-1.c:10:1: sorry, unimplemented: '-fzero-call-used-regs' not supported on this target
   10 | }
      | ^

With the patch, the error would be like this:
 In file included from gcc/testsuite/c-c++-common/zero-scratch-regs-8.c:5:
gcc/testsuite/c-c++-common/zero-scratch-regs-1.c: In function 'foo':
gcc/testsuite/c-c++-common/zero-scratch-regs-1.c:10:1: sorry, unimplemented: argument 'all-arg' is not supported for '-fzero-call-used-regs' on this target
   10 | }
      | ^

2022-09-19  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>

gcc/ChangeLog:

* targhooks.cc (default_zero_call_used_regs): Improve sorry
message.

Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
gcc/targhooks.cc

index b15ae19bcb60c59ae8112e67b5f06a241a9bdbf1..d17d393baedc16574ddecb86e868799a65736660 100644 (file)
@@ -93,6 +93,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple.h"
 #include "cfgloop.h"
 #include "tree-vectorizer.h"
+#include "options.h"
 
 bool
 default_legitimate_address_p (machine_mode mode ATTRIBUTE_UNUSED,
@@ -1181,9 +1182,21 @@ default_zero_call_used_regs (HARD_REG_SET need_zeroed_hardregs)
       static bool issued_error;
       if (!issued_error)
        {
+         const char *name = NULL;
+         for (unsigned int i = 0; zero_call_used_regs_opts[i].name != NULL;
+              ++i)
+           if (flag_zero_call_used_regs == zero_call_used_regs_opts[i].flag)
+             {
+               name = zero_call_used_regs_opts[i].name;
+               break;
+             }
+
+         if (!name)
+           name = "";
+
          issued_error = true;
-         sorry ("%qs not supported on this target",
-                "-fzero-call-used-regs");
+         sorry ("argument %qs is not supported for %qs on this target",
+                name, "-fzero-call-used-regs");
        }
     }