aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDJ Delorie <dj@gcc.gnu.org>2006-01-16 19:58:06 -0500
committerDJ Delorie <dj@gcc.gnu.org>2006-01-16 19:58:06 -0500
commit838f78d63b20aaf9078bf5afe2e94054fcd180f7 (patch)
tree653d54d6cce1237b0ddb2eab1bc74bc7a583bdfe /gcc
parent2d6ae5d626e4362718b2ccc0a3e86184721cecf2 (diff)
downloadgcc-838f78d63b20aaf9078bf5afe2e94054fcd180f7.zip
gcc-838f78d63b20aaf9078bf5afe2e94054fcd180f7.tar.gz
gcc-838f78d63b20aaf9078bf5afe2e94054fcd180f7.tar.bz2
reload.c (reg_overlap_mentioned_for_reload_p): Handle subregs of mems.
* reload.c (reg_overlap_mentioned_for_reload_p): Handle subregs of mems. From-SVN: r109792
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/reload.c2
2 files changed, 8 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bc7f001..e8eeccb 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2006-01-16 DJ Delorie <dj@redhat.com>
+
+ * reload.c (reg_overlap_mentioned_for_reload_p): Handle subregs of
+ mems.
+
2006-01-16 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
* pa.md: Disparage copies between general and floating-point registers
@@ -31,7 +36,7 @@
* basic-block.h: Remove the prototype for
partition_hot_cold_basic_blocks.
-2006-01-16 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
+2006-01-16 Rafael Ávila de EspÁndola <rafael.espindola@gmail.com>
* cppspec.c (lang_specific_spec_functions): remove
* gcc.c (lookup_spec_function): use static_spec_functions directelly
diff --git a/gcc/reload.c b/gcc/reload.c
index 2b61a8e..92ad085 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -6329,6 +6329,8 @@ reg_overlap_mentioned_for_reload_p (rtx x, rtx in)
/* If either argument is a constant, then modifying X can not affect IN. */
if (CONSTANT_P (x) || CONSTANT_P (in))
return 0;
+ else if (GET_CODE (x) == SUBREG && GET_CODE (SUBREG_REG (x)) == MEM)
+ return refers_to_mem_for_reload_p (in);
else if (GET_CODE (x) == SUBREG)
{
regno = REGNO (SUBREG_REG (x));