diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 600619cb2c3a6744e1d158e352642caffcb6679b..72fa4a5ee7ba343b3cb7b120e809c7c6873bbdef 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,8 @@
 2006-03-23  Richard Henderson  <rth@redhat.com>
 
+	* config/alpha/alpha.c (alpha_legitimate_constant_p): Reject
+	tls symbols.
+
 	PR target/26347
 	* config/alpha/predicates.md (local_symbolic_operand): Reject
 	weak symbols.
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index 14d54388e6085badfbfbf46f725bb4e16d9de2bc..6b1cef70bb015b3fe6b750559b5609dd5db7fcb1 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -2124,10 +2124,13 @@ alpha_legitimate_constant_p (rtx x)
     {
     case CONST:
     case LABEL_REF:
-    case SYMBOL_REF:
     case HIGH:
       return true;
 
+    case SYMBOL_REF:
+      /* TLS symbols are never valid.  */
+      return SYMBOL_REF_TLS_MODEL (x) == 0;
+
     case CONST_DOUBLE:
       if (x == CONST0_RTX (mode))
 	return true;