sparc.c (sparc_delegitimize_address): Handle UNSPEC_MOVE_PIC pattern.
authorEric Botcazou <ebotcazou@adacore.com>
Sun, 22 May 2011 20:10:54 +0000 (20:10 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Sun, 22 May 2011 20:10:54 +0000 (20:10 +0000)
* config/sparc/sparc.c (sparc_delegitimize_address): Handle
UNSPEC_MOVE_PIC pattern.

From-SVN: r174043

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

index b09e75188ed4b766d1a63ce86161b4c42e59f278..ef29e49d9674787629e22adc4686fbf857e6e60e 100644 (file)
@@ -1,3 +1,8 @@
+2011-05-22  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * config/sparc/sparc.c (sparc_delegitimize_address): Handle
+       UNSPEC_MOVE_PIC pattern.
+
 2011-05-22  Eric Botcazou  <ebotcazou@adacore.com>
 
        * config.gcc (sparc-*-elf*): Add sparc/t-crtin.
index 22f641db519f1acf907b0723bbb6566f9f5a3e2d..bd7d12a65535e3c5d7eeb46e0438b0b1497f4278 100644 (file)
@@ -3615,13 +3615,17 @@ sparc_delegitimize_address (rtx x)
 {
   x = delegitimize_mem_from_attrs (x);
 
-  if (GET_CODE (x) == LO_SUM
-      && GET_CODE (XEXP (x, 1)) == UNSPEC
-      && XINT (XEXP (x, 1), 1) == UNSPEC_TLSLE)
-    {
-      x = XVECEXP (XEXP (x, 1), 0, 0);
-      gcc_assert (GET_CODE (x) == SYMBOL_REF);
-    }
+  if (GET_CODE (x) == LO_SUM && GET_CODE (XEXP (x, 1)) == UNSPEC)
+    switch (XINT (XEXP (x, 1), 1))
+      {
+      case UNSPEC_MOVE_PIC:
+      case UNSPEC_TLSLE:
+       x = XVECEXP (XEXP (x, 1), 0, 0);
+       gcc_assert (GET_CODE (x) == SYMBOL_REF);
+       break;
+      default:
+       break;
+      }
 
   /* This is generated by mov{si,di}_pic_label_ref in PIC mode.  */
   if (GET_CODE (x) == MINUS