diff options
author | Jim Wilson <wilson@gcc.gnu.org> | 1996-05-18 17:16:38 -0700 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1996-05-18 17:16:38 -0700 |
commit | 7085bad383da40cb4e8c22076991277d088bc882 (patch) | |
tree | 8c58b1761dbddf008c6c7dc8474cf08000bb2111 /gcc/unroll.c | |
parent | bb431b7a6c9aa811ff416a4535d6abee8985a48a (diff) | |
download | gcc-7085bad383da40cb4e8c22076991277d088bc882.zip gcc-7085bad383da40cb4e8c22076991277d088bc882.tar.gz gcc-7085bad383da40cb4e8c22076991277d088bc882.tar.bz2 |
(copy_loop_body): When update split DEST_ADDR giv,
check to make sure it was split.
(find_splittable_givs): Fix reversed test of verify_addresses result.
From-SVN: r12034
Diffstat (limited to 'gcc/unroll.c')
-rw-r--r-- | gcc/unroll.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/unroll.c b/gcc/unroll.c index e5b1e0e..377f046 100644 --- a/gcc/unroll.c +++ b/gcc/unroll.c @@ -1606,10 +1606,15 @@ copy_loop_body (copy_start, copy_end, map, exit_label, last_iteration, for (tv = bl->giv; tv; tv = tv->next_iv) if (tv->giv_type == DEST_ADDR && tv->same == v) { - int this_giv_inc = INTVAL (giv_inc); + int this_giv_inc; + + /* If this DEST_ADDR giv was not split, then ignore it. */ + if (*tv->location != tv->dest_reg) + continue; /* Scale this_giv_inc if the multiplicative factors of the two givs are different. */ + this_giv_inc = INTVAL (giv_inc); if (tv->mult_val != v->mult_val) this_giv_inc = (this_giv_inc / INTVAL (v->mult_val) * INTVAL (tv->mult_val)); @@ -2780,7 +2785,7 @@ find_splittable_givs (bl, unroll_type, loop_start, loop_end, increment, Try to validate both the first and the last address resulting from loop unrolling, if one fails, then can't do const elim here. */ - if (! verify_addresses (v, giv_inc, unroll_number)) + if (verify_addresses (v, giv_inc, unroll_number)) { /* Save the negative of the eliminated const, so that we can calculate the dest_reg's increment |