The switch to C++17 broke SPARC bootstrap:

/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c:8887:34: error: ISO C++17 
does not allow 'register' storage class specifier [-Werror=register]
 8887 | epilogue_renumber (register rtx *where, int test)
      |                                  ^~~~~
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c: In function 'int 
epilogue_renumber(rtx_def**, int)':
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c:8889:24: error: ISO C++17 
does not allow 'register' storage class specifier [-Werror=register]
 8889 |   register const char *fmt;
      |                        ^~~
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c:8890:16: error: ISO C++17 
does not allow 'register' storage class specifier [-Werror=register]
 8890 |   register int i;
      |                ^
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c:8891:26: error: ISO C++17 
does not allow 'register' storage class specifier [-Werror=register]
 8891 |   register enum rtx_code code;
      |                          ^~~~
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c:8948:17: error: ISO C++17 
does not allow 'register' storage class specifier [-Werror=register]
 8948 |    register int j;
      |                 ^
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c: In function 'void 
sparc_print_operand_address(std::FILE*, machine_mode, rtx)':
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c:9671:16: error: ISO C++17 
does not allow 'register' storage class specifier [-Werror=register]
 9671 |   register rtx base, index = 0;
      |                ^~~~
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c:9671:22: error: ISO C++17 
does not allow 'register' storage class specifier [-Werror=register]
 9671 |   register rtx base, index = 0;
      |                      ^~~~~
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c:9673:16: error: ISO C++17 
does not allow 'register' storage class specifier [-Werror=register]
 9673 |   register rtx addr = x;
      |                ^~~~
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c: At global scope:
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c:9807:32: error: ISO C++17 
does not allow 'register' storage class specifier [-Werror=register]
 9807 | sparc_type_code (register tree type)
      |                                ^~~~
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c: In function 'long 
unsigned int sparc_type_code(tree)':
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c:9809:26: error: ISO C++17 
does not allow 'register' storage class specifier [-Werror=register]
 9809 |   register unsigned long qualifiers = 0;
      |                          ^~~~~~~~~~
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c:9810:21: error: ISO C++17 
does not allow 'register' storage class specifier [-Werror=register]
 9810 |   register unsigned shift;
      |                     ^~~~~
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c: In function 'int 
set_extends(rtx_insn*)':
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c:10306:16: error: ISO 
C++17 does not allow 'register' storage class specifier [-Werror=register]
10306 |   register rtx pat = PATTERN (insn);
      |                ^~~

Fixed by removing the register keyword.  Bootstrapped on
sparc-sun-solaris2.11.  Installed as obvious.

        Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University


2020-06-28  Rainer Orth  <r...@cebitec.uni-bielefeld.de>

        * config/sparc/sparc.c (epilogue_renumber): Remove register.
        (sparc_print_operand_address): Likewise.
        (sparc_type_code): Likewise.
        (set_extends): Likewise.

# HG changeset patch
# Parent  30ae6f30133e6cba64c50970a215f2578bc18897
sparc: Remove register storage class in sparc.c

diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -8884,11 +8884,11 @@ output_v9branch (rtx op, rtx dest, int r
  */
 
 static int
-epilogue_renumber (register rtx *where, int test)
-{
-  register const char *fmt;
-  register int i;
-  register enum rtx_code code;
+epilogue_renumber (rtx *where, int test)
+{
+  const char *fmt;
+  int i;
+  enum rtx_code code;
 
   if (*where == 0)
     return 0;
@@ -8945,7 +8945,7 @@ epilogue_renumber (register rtx *where, 
     {
       if (fmt[i] == 'E')
 	{
-	  register int j;
+	  int j;
 	  for (j = XVECLEN (*where, i) - 1; j >= 0; j--)
 	    if (epilogue_renumber (&(XVECEXP (*where, i, j)), test))
 	      return 1;
@@ -9668,9 +9668,9 @@ sparc_print_operand (FILE *file, rtx x, 
 static void
 sparc_print_operand_address (FILE *file, machine_mode /*mode*/, rtx x)
 {
-  register rtx base, index = 0;
+  rtx base, index = 0;
   int offset = 0;
-  register rtx addr = x;
+  rtx addr = x;
 
   if (REG_P (addr))
     fputs (reg_names[REGNO (addr)], file);
@@ -9804,10 +9804,10 @@ sparc_assemble_integer (rtx x, unsigned 
 #endif
 
 unsigned long
-sparc_type_code (register tree type)
-{
-  register unsigned long qualifiers = 0;
-  register unsigned shift;
+sparc_type_code (tree type)
+{
+  unsigned long qualifiers = 0;
+  unsigned shift;
 
   /* Only the first 30 bits of the qualifier are valid.  We must refrain from
      setting more, since some assemblers will give an error for this.  Also,
@@ -10303,7 +10303,7 @@ sparc_branch_cost (bool speed_p, bool pr
 static int
 set_extends (rtx_insn *insn)
 {
-  register rtx pat = PATTERN (insn);
+  rtx pat = PATTERN (insn);
 
   switch (GET_CODE (SET_SRC (pat)))
     {

Reply via email to