re PR bootstrap/88721 (-Wmaybe-uninitialized warnings in sparc.c)
authorEric Botcazou <ebotcazou@adacore.com>
Tue, 8 Jan 2019 19:09:52 +0000 (19:09 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Tue, 8 Jan 2019 19:09:52 +0000 (19:09 +0000)
PR bootstrap/88721
* config/sparc/sparc.c (function_arg_slotno): Set *PPREGNO & *PPADDING
to -1 on entry.

PR debug/88723
* config/sparc/sparc.c (sparc_delegitimize_address): Deal with naked
UNSPECs and UNSPEC_MOVE_GOTDATA specifically.

From-SVN: r267734

gcc/ChangeLog
gcc/config/sparc/sparc.c

index 7b4f6e5..18dab7e 100644 (file)
@@ -1,3 +1,13 @@
+2019-01-08  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR bootstrap/88721
+       * config/sparc/sparc.c (function_arg_slotno): Set *PPREGNO & *PPADDING
+       to -1 on entry.
+
+       PR debug/88723
+       * config/sparc/sparc.c (sparc_delegitimize_address): Deal with naked
+       UNSPECs and UNSPEC_MOVE_GOTDATA specifically.
+
 2019-01-08  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR target/88717
index 72669af..62644e0 100644 (file)
@@ -4949,12 +4949,19 @@ sparc_delegitimize_address (rtx x)
 {
   x = delegitimize_mem_from_attrs (x);
 
-  if (GET_CODE (x) == LO_SUM && GET_CODE (XEXP (x, 1)) == UNSPEC)
-    switch (XINT (XEXP (x, 1), 1))
+  if (GET_CODE (x) == LO_SUM)
+    x = XEXP (x, 1);
+
+  if (GET_CODE (x) == UNSPEC)
+    switch (XINT (x, 1))
       {
       case UNSPEC_MOVE_PIC:
       case UNSPEC_TLSLE:
-       x = XVECEXP (XEXP (x, 1), 0, 0);
+       x = XVECEXP (x, 0, 0);
+       gcc_assert (GET_CODE (x) == SYMBOL_REF);
+       break;
+      case UNSPEC_MOVE_GOTDATA:
+       x = XVECEXP (x, 0, 2);
        gcc_assert (GET_CODE (x) == SYMBOL_REF);
        break;
       default:
@@ -6873,6 +6880,10 @@ function_arg_slotno (const struct sparc_args *cum, machine_mode mode,
   int slotno = cum->words, regno;
   enum mode_class mclass = GET_MODE_CLASS (mode);
 
+  /* Silence warnings in the callers.  */
+  *pregno = -1;
+  *ppadding = -1;
+
   if (type && TREE_ADDRESSABLE (type))
     return -1;