aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorDavid Edelsohn <dje@gcc.gnu.org>2013-01-23 11:24:54 -0500
committerDavid Edelsohn <dje@gcc.gnu.org>2013-01-23 11:24:54 -0500
commitf6fee35fb2e964a7595711890637c2243535f60c (patch)
tree7b413d6e5d00858a465ca297af26f3341808613f /gcc/config
parentc77291841ca9414189cfdaf69c41d2ac56f921f7 (diff)
downloadgcc-f6fee35fb2e964a7595711890637c2243535f60c.zip
gcc-f6fee35fb2e964a7595711890637c2243535f60c.tar.gz
gcc-f6fee35fb2e964a7595711890637c2243535f60c.tar.bz2
rs6000.c (rs6000_delegitimize_address): Check that TOC operand is a valid symbol ref in the constant pool.
* config/rs6000/rs6000.c (rs6000_delegitimize_address): Check that TOC operand is a valid symbol ref in the constant pool. From-SVN: r195409
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/rs6000/rs6000.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 46bb0b4..76d7f3d 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -5831,6 +5831,8 @@ rs6000_delegitimize_address (rtx orig_x)
/* Do not associate thread-local symbols with the original
constant pool symbol. */
if (TARGET_XCOFF
+ && GET_CODE (y) == SYMBOL_REF
+ && CONSTANT_POOL_ADDRESS_P (y)
&& SYMBOL_REF_TLS_MODEL (get_pool_constant (y)) >= TLS_MODEL_REAL)
return orig_x;
#endif