s390.c (legitimize_pic_address): Assertions checking for non tls symbols added.
authorAngel Nunez Mencias <anunez@de.ibm.com>
Mon, 20 Feb 2006 08:42:27 +0000 (08:42 +0000)
committerAndreas Krebbel <krebbel@gcc.gnu.org>
Mon, 20 Feb 2006 08:42:27 +0000 (08:42 +0000)
2006-02-20  Angel Nunez Mencias  <anunez@de.ibm.com>

* config/s390/s390.c (legitimize_pic_address): Assertions checking
for non tls symbols added.
(legitimize_address): Do nothing for PLUS expressions if one of the
addends is a tls symbol reference.

From-SVN: r111296

gcc/ChangeLog
gcc/config/s390/s390.c

index 51a06358b89803cac659fbf9aaaf6d6b75812f09..ce38f1879c183981e7764f978e1ee0a9ed2ab492 100644 (file)
@@ -1,3 +1,10 @@
+2006-02-20  Angel Nunez Mencias  <anunez@de.ibm.com>
+
+       * config/s390/s390.c (legitimize_pic_address): Assertions checking
+       for non tls symbols added.
+       (legitimize_address): Do nothing for PLUS expressions if one of the
+       addends is a tls symbol reference.
+
 2006-02-20  Paolo Bonzini  <bonzini@gnu.org>
 
        PR bootstrap/25476
index bdf1512554126d79a5619c6c6aa8312f7692d2d2..3eeb4acb0b6dbb21dc6e061b9b05181e2988e5be 100644 (file)
@@ -2821,6 +2821,8 @@ legitimize_pic_address (rtx orig, rtx reg)
   rtx new = orig;
   rtx base;
 
+  gcc_assert (!TLS_SYMBOLIC_CONST (addr));
+
   if (GET_CODE (addr) == LABEL_REF
       || (GET_CODE (addr) == SYMBOL_REF && SYMBOL_REF_LOCAL_P (addr)))
     {
@@ -2973,6 +2975,10 @@ legitimize_pic_address (rtx orig, rtx reg)
       if (GET_CODE (addr) == PLUS)
        {
          rtx op0 = XEXP (addr, 0), op1 = XEXP (addr, 1);
+
+         gcc_assert (!TLS_SYMBOLIC_CONST (op0));
+         gcc_assert (!TLS_SYMBOLIC_CONST (op1));
+
          /* Check first to see if this is a constant offset
              from a local symbol reference.  */
          if ((GET_CODE (op0) == LABEL_REF
@@ -3345,6 +3351,12 @@ legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED,
       if (legitimate_address_p (mode, x, FALSE))
        return x;
     }
+  else if (GET_CODE (x) == PLUS
+          && (TLS_SYMBOLIC_CONST (XEXP (x, 0)) 
+              || TLS_SYMBOLIC_CONST (XEXP (x, 1))))
+    {
+      return x;
+    }
   else if (flag_pic)
     {
       if (SYMBOLIC_CONST (x)