summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2009-08-03 15:58:55 +0000
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2009-08-03 15:58:55 +0000
commit75645350325fa00cc8a4868968ee4254c0eb4657 (patch)
treee42053ec9d3d71df749b5f77cfa7e11223f7772e
parentb29d7d6e75f98eca4d31d30e477e43782f7605db (diff)
downloadppe42-gcc-75645350325fa00cc8a4868968ee4254c0eb4657.tar.gz
ppe42-gcc-75645350325fa00cc8a4868968ee4254c0eb4657.zip
* config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
constants referencing TLS symbols. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150372 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/alpha/alpha.c13
2 files changed, 18 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 965beac27c5..04816e3f0de 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2009-08-03 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
+ constants referencing TLS symbols.
+
2009-08-03 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
* config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
@@ -29,8 +34,7 @@
2009-08-03 Andreas Krebbel <krebbel1@de.ibm.com>
- * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as
- possibly unused.
+ * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
2009-08-02 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index f250e14a0c2..fe515d4d0f2 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -2062,11 +2062,22 @@ alpha_legitimate_constant_p (rtx x)
switch (GET_CODE (x))
{
- case CONST:
case LABEL_REF:
case HIGH:
return true;
+ case CONST:
+ if (GET_CODE (XEXP (x, 0)) == PLUS
+ && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT)
+ x = XEXP (XEXP (x, 0), 0);
+ else
+ return true;
+
+ if (GET_CODE (x) != SYMBOL_REF)
+ return true;
+
+ /* FALLTHRU */
+
case SYMBOL_REF:
/* TLS symbols are never valid. */
return SYMBOL_REF_TLS_MODEL (x) == 0;
OpenPOWER on IntegriCloud