From 75645350325fa00cc8a4868968ee4254c0eb4657 Mon Sep 17 00:00:00 2001 From: uros Date: Mon, 3 Aug 2009 15:58:55 +0000 Subject: [PATCH] * 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 --- gcc/ChangeLog | 8 ++++++-- gcc/config/alpha/alpha.c | 13 ++++++++++++- 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 + + * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST + constants referencing TLS symbols. + 2009-08-03 SUGIOKA Toshinobu * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename @@ -29,8 +34,7 @@ 2009-08-03 Andreas Krebbel - * 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 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; -- 2.11.0