aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1999-01-15 01:53:08 +0000
committerJeff Law <law@gcc.gnu.org>1999-01-14 18:53:08 -0700
commitf387b2e4ff801ce9cf9da33580eabf098e210c85 (patch)
tree51c62179addd9640f765c71df176ae2ba489d525
parent41b6ea681b5466b6bcbae045514f44792ef564a7 (diff)
downloadgcc-f387b2e4ff801ce9cf9da33580eabf098e210c85.zip
gcc-f387b2e4ff801ce9cf9da33580eabf098e210c85.tar.gz
gcc-f387b2e4ff801ce9cf9da33580eabf098e210c85.tar.bz2
unroll.c (find_splittable_givs): For a DEST_ADDR giv...
* unroll.c (find_splittable_givs): For a DEST_ADDR giv, do not share a register with another DEST_ADDR giv if the address is not valid. From-SVN: r24673
-rw-r--r--gcc/ChangeLog3
-rw-r--r--gcc/unroll.c7
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fe84462..f15b2c4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,8 @@
Thu Jan 14 22:38:41 1999 Jeffrey A Law (law@cygnus.com)
+ * unroll.c (find_splittable_givs): For a DEST_ADDR giv, do not share
+ a register with another DEST_ADDR giv if the address is not valid.
+
* pa.c (hppa_expand_epilogue): Save and restore the static chain
around the call to mcount.
diff --git a/gcc/unroll.c b/gcc/unroll.c
index d36fba5..501a6e5 100644
--- a/gcc/unroll.c
+++ b/gcc/unroll.c
@@ -2847,8 +2847,11 @@ find_splittable_givs (bl, unroll_type, loop_start, loop_end, increment,
To share a register here, the values must be
equal. */
&& rtx_equal_p (v->same->mult_val, v->mult_val)
- && rtx_equal_p (v->same->add_val, v->add_val))
-
+ && rtx_equal_p (v->same->add_val, v->add_val)
+ /* If the memory references have different modes,
+ then the address may not be valid and we must
+ not share registers. */
+ && verify_addresses (v, giv_inc, unroll_number))
{
v->dest_reg = v->same->dest_reg;
v->shared = 1;