alpha.c (tls_symbolic_operand_1): Trust SYMBOL_REF_TLS_MODEL to be correct.
authorRichard Henderson <rth@redhat.com>
Sun, 25 Sep 2005 18:34:45 +0000 (11:34 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Sun, 25 Sep 2005 18:34:45 +0000 (11:34 -0700)
        * config/alpha/alpha.c (tls_symbolic_operand_1): Trust
        SYMBOL_REF_TLS_MODEL to be correct.

From-SVN: r104622

gcc/ChangeLog
gcc/config/alpha/alpha.c

index dd5d399..5d20b88 100644 (file)
@@ -1,3 +1,8 @@
+2005-09-25  Richard Henderson  <rth@redhat.com>
+
+       * config/alpha/alpha.c (tls_symbolic_operand_1): Trust
+       SYMBOL_REF_TLS_MODEL to be correct.
+
 2005-09-24  Richard Henderson  <rth@redhat.com>
 
        * ipa-type-escape.c (discover_unique_type): Remove dead code at
index 1e31db4..89b292c 100644 (file)
@@ -533,25 +533,14 @@ tls_symbolic_operand_1 (rtx op, int size, int unspec)
   if (GET_CODE (op) != SYMBOL_REF)
     return 0;
 
-  if (SYMBOL_REF_LOCAL_P (op))
-    {
-      if (alpha_tls_size > size)
-       return 0;
-    }
-  else
-    {
-      if (size != 64)
-       return 0;
-    }
-
   switch (SYMBOL_REF_TLS_MODEL (op))
     {
     case TLS_MODEL_LOCAL_DYNAMIC:
-      return unspec == UNSPEC_DTPREL;
+      return unspec == UNSPEC_DTPREL && size == alpha_tls_size;
     case TLS_MODEL_INITIAL_EXEC:
       return unspec == UNSPEC_TPREL && size == 64;
     case TLS_MODEL_LOCAL_EXEC:
-      return unspec == UNSPEC_TPREL;
+      return unspec == UNSPEC_TPREL && size == alpha_tls_size;
     default:
       gcc_unreachable ();
     }