s390.c (legitimize_tls_address): Handle constant offsets added to TLS symbol addresses.
authorUlrich Weigand <uweigand@de.ibm.com>
Sun, 11 Jul 2004 11:44:09 +0000 (11:44 +0000)
committerUlrich Weigand <uweigand@gcc.gnu.org>
Sun, 11 Jul 2004 11:44:09 +0000 (11:44 +0000)
* config/s390/s390.c (legitimize_tls_address): Handle constant offsets
added to TLS symbol addresses.

From-SVN: r84504

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

index 03d7804a6df1a31f92bcf4ccc21835d2a3b91e61..147f9ec3895f589fe5db459ae1ae683671d8044e 100644 (file)
@@ -1,3 +1,8 @@
+2004-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
+
+       * config/s390/s390.c (legitimize_tls_address): Handle constant offsets
+       added to TLS symbol addresses.
+
 2004-07-11  Richard Henderson  <rth@redhat.com>
 
        * expmed.c (init_expmed): Use stack-local structures for 
index 5a8b46d0423b82af977c0d7756d5c28a7703a75f..614e714b8a09d3d0451d62bf7bdf9831ac9b6ae6 100644 (file)
@@ -2913,6 +2913,18 @@ legitimize_tls_address (rtx addr, rtx reg)
        }
     }
 
+  else if (GET_CODE (addr) == CONST && GET_CODE (XEXP (addr, 0)) == PLUS
+          && GET_CODE (XEXP (XEXP (addr, 0), 1)) == CONST_INT)
+    {
+      new = XEXP (XEXP (addr, 0), 0);
+      if (GET_CODE (new) != SYMBOL_REF)
+       new = gen_rtx_CONST (Pmode, new);
+
+      new = legitimize_tls_address (new, reg);
+      new = plus_constant (new, INTVAL (XEXP (XEXP (addr, 0), 1)));
+      new = force_operand (new, 0);
+    }
+
   else
     abort ();  /* for now ... */