aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2011-06-21 00:35:05 +0930
committerAlan Modra <amodra@gcc.gnu.org>2011-06-21 00:35:05 +0930
commit3a769784968e6d24092cedc1eb363b60b4066484 (patch)
tree068c3cb2f274b99c0238fb6346249d595c4c6c2d /gcc
parentd1e32c4a411c4a216b7d80e56da2b8a73197505e (diff)
downloadgcc-3a769784968e6d24092cedc1eb363b60b4066484.zip
gcc-3a769784968e6d24092cedc1eb363b60b4066484.tar.gz
gcc-3a769784968e6d24092cedc1eb363b60b4066484.tar.bz2
rs6000.c (rs6000_cannot_force_const_mem): Match CONST high part large-toc address.
* config/rs6000/rs6000.c (rs6000_cannot_force_const_mem): Match CONST high part large-toc address. (rs6000_tls_referenced_p): Make static. * config/rs6000/rs6000-protos.h (rs6000_tls_referenced_p): Delete. From-SVN: r175219
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/rs6000/rs6000-protos.h1
-rw-r--r--gcc/config/rs6000/rs6000.c7
3 files changed, 13 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a4b5faf..455fdcf 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2011-06-21 Alan Modra <amodra@gmail.com>
+
+ * config/rs6000/rs6000.c (rs6000_cannot_force_const_mem): Match
+ CONST high part large-toc address.
+ (rs6000_tls_referenced_p): Make static.
+ * config/rs6000/rs6000-protos.h (rs6000_tls_referenced_p): Delete.
+
2011-06-20 H.J. Lu <hongjiu.lu@intel.com>
PR middle-end/47725
diff --git a/gcc/config/rs6000/rs6000-protos.h b/gcc/config/rs6000/rs6000-protos.h
index b7b60c0..36f2a4c 100644
--- a/gcc/config/rs6000/rs6000-protos.h
+++ b/gcc/config/rs6000/rs6000-protos.h
@@ -171,7 +171,6 @@ extern unsigned int rs6000_dbx_register_number (unsigned int);
extern void rs6000_emit_epilogue (int);
extern void rs6000_emit_eh_reg_restore (rtx, rtx);
extern const char * output_isel (rtx *);
-extern bool rs6000_tls_referenced_p (rtx);
extern void rs6000_aix_asm_output_dwarf_table_ref (char *);
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index df6e7d9..cea1650 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -6045,7 +6045,7 @@ rs6000_legitimize_tls_address (rtx addr, enum tls_model model)
/* Return 1 if X contains a thread-local symbol. */
-bool
+static bool
rs6000_tls_referenced_p (rtx x)
{
if (! TARGET_HAVE_TLS)
@@ -6059,6 +6059,11 @@ rs6000_tls_referenced_p (rtx x)
static bool
rs6000_cannot_force_const_mem (enum machine_mode mode ATTRIBUTE_UNUSED, rtx x)
{
+ if (GET_CODE (x) == CONST
+ && GET_CODE (XEXP (x, 0)) == PLUS
+ && GET_CODE (XEXP (XEXP (x, 0), 1)) == HIGH)
+ return true;
+
return rs6000_tls_referenced_p (x);
}