re PR bootstrap/48168 (Solaris 2/SPARC bootstrap broken: ICE in sparc_function_arg_1...
authorEric Botcazou <ebotcazou@adacore.com>
Sun, 20 Mar 2011 21:50:20 +0000 (21:50 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Sun, 20 Mar 2011 21:50:20 +0000 (21:50 +0000)
PR bootstrap/48168
* config/sparc/sparc.c (sparc_delegitimize_address): Add new pattern.

From-SVN: r171197

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

index 5549bc1b1af71d7937bc2f10c73c46d843946eff..bc2728b7a46159d032cc90f99776dd7c4ec10563 100644 (file)
@@ -1,3 +1,8 @@
+2011-03-20  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR bootstrap/48168
+       * config/sparc/sparc.c (sparc_delegitimize_address): Add new pattern.
+
 2011-03-20  Jakub Jelinek  <jakub@redhat.com>
 
        PR rtl-optimization/48156
index 0f137e8b68f638b8f88c4afa75422a5d940f86c1..2060fa2eccbdbfb1ff1f1ee85c5697af7b186f63 100644 (file)
@@ -3661,6 +3661,18 @@ sparc_delegitimize_address (rtx x)
       gcc_assert (GET_CODE (x) == SYMBOL_REF);
     }
 
+  /* This is generated by mov{si,di}_pic_label_ref in PIC mode.  */
+  if (GET_CODE (x) == MINUS
+      && REG_P (XEXP (x, 0))
+      && REGNO (XEXP (x, 0)) == PIC_OFFSET_TABLE_REGNUM
+      && GET_CODE (XEXP (x, 1)) == LO_SUM
+      && GET_CODE (XEXP (XEXP (x, 1), 1)) == UNSPEC
+      && XINT (XEXP (XEXP (x, 1), 1), 1) == UNSPEC_MOVE_PIC_LABEL)
+    {
+      x = XVECEXP (XEXP (XEXP (x, 1), 1), 0, 0);
+      gcc_assert (GET_CODE (x) == LABEL_REF);
+    }
+
   return x;
 }