diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fddbac35d20..dbf705c5366 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +Sun Sep 9 10:43:17 CEST 2001 Jan Hubicka + + * loop.c (combine_givs): Fix computing of benefit once giv is combined. + 2001-09-09 Richard Henderson * config/alpha/alpha.c (alpha_next_sequence_number): New. diff --git a/gcc/loop.c b/gcc/loop.c index 990826a5a7d..ef1b7ee3ea8 100644 --- a/gcc/loop.c +++ b/gcc/loop.c @@ -6851,6 +6851,13 @@ restart: g2->new_reg = can_combine[i * giv_count + j]; g2->same = g1; + /* For destination, we now may replace by mem expression instead + of register. This changes the costs considerably, so add the + compensation. */ + if (g2->giv_type == DEST_ADDR) + g2->benefit = (g2->benefit + reg_address_cost + - address_cost (g2->new_reg, + GET_MODE (g2->mem))); g1->combined_with++; g1->lifetime += g2->lifetime;