diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2009-08-03 16:09:19 +0000 |
---|---|---|
committer | Uros Bizjak <ubizjak@gmail.com> | 2009-08-03 16:09:19 +0000 |
commit | dfd33a79001ca5ce79ace6963cdbcabdc4e14cbf (patch) | |
tree | 970dd175d84c4e238f2fcd82f9b05d008fe0dcdb | |
parent | a17017502c0fed248533ac866236de5a6dcbe21f (diff) |
* config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
constants referencing TLS symbols.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/gcc-4_4-branch@150373 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.c | 13 |
2 files changed, 17 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1fe71240bf1..446f5a0bdfe 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-07-30 Andreas Krebbel <krebbel1@de.ibm.com> * config/s390/s390.c (override_options): Default diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 21b4342a556..c6182dc6181 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -2052,11 +2052,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; |