aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/rs6000/rs6000.c2
2 files changed, 8 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a90ec6ef..b511b15 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,4 +1,9 @@
-2013-01-23 Edgar E. Iglesias <edgar.iglesias@gmail.com>
+2013-01-23 David Edelsohn <dje.gcc@gmail.com>
+
+ * config/rs6000/rs6000.c (rs6000_delegitimize_address): Check that
+ TOC operand is a valid symbol ref in the constant pool.
+
+2013-01-23 Edgar E. Iglesias <edgar.iglesias@gmail.com>
* gcc/config/microblaze/linux.h: Add TARGET_OS_CPP_BUILTINS
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