diff options
author | Uros Bizjak <uros@gcc.gnu.org> | 2009-08-03 17:58:55 +0200 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2009-08-03 17:58:55 +0200 |
commit | 42a9ba1d7e12ecd8a58b0c32801601e09de7a30b (patch) | |
tree | e42053ec9d3d71df749b5f77cfa7e11223f7772e /gcc/config/alpha/alpha.c | |
parent | 9f774cb03aa6d4d020fb1bb711a84f987bd5e42b (diff) | |
download | gcc-42a9ba1d7e12ecd8a58b0c32801601e09de7a30b.zip gcc-42a9ba1d7e12ecd8a58b0c32801601e09de7a30b.tar.gz gcc-42a9ba1d7e12ecd8a58b0c32801601e09de7a30b.tar.bz2 |
alpha.c (alpha_legitimate_constant_p): Reject CONST constants referencing TLS symbols.
* config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
constants referencing TLS symbols.
From-SVN: r150372
Diffstat (limited to 'gcc/config/alpha/alpha.c')
-rw-r--r-- | gcc/config/alpha/alpha.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index f250e14..fe515d4 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; |