flow.c (update_life_info): Ignore return value of cleanup_cfg.

* flow.c (update_life_info): Ignore return value of cleanup_cfg.
	Mask out PROP_SCAN_DEAD_CODE | PROP_KILL_DEAD_CODE in
	propagate_block calls after relaxation loop using new variable
	stabilized_prop_flags.

From-SVN: r52498
This commit is contained in:
Hans-Peter Nilsson 2002-04-18 22:11:39 +00:00 committed by Hans-Peter Nilsson
parent 0c7c67f076
commit 566576e718
2 changed files with 25 additions and 3 deletions

View file

@ -1,3 +1,10 @@
2002-04-18 Hans-Peter Nilsson <hp@bitrange.com>
* flow.c (update_life_info): Ignore return value of cleanup_cfg.
Mask out PROP_SCAN_DEAD_CODE | PROP_KILL_DEAD_CODE in
propagate_block calls after relaxation loop using new variable
stabilized_prop_flags.
2002-04-18 Richard Henderson <rth@redhat.com>
* config/ia64/ia64.c (ia64_function_arg_pass_by_reference): New.

View file

@ -637,6 +637,7 @@ update_life_info (blocks, extent, prop_flags)
regset tmp;
regset_head tmp_head;
int i;
int stabilized_prop_flags = prop_flags;
tmp = INITIALIZE_REG_SET (tmp_head);
ndead = 0;
@ -677,8 +678,21 @@ update_life_info (blocks, extent, prop_flags)
| PROP_KILL_DEAD_CODE));
}
if (! changed || ! cleanup_cfg (CLEANUP_EXPENSIVE))
/* Don't pass PROP_SCAN_DEAD_CODE or PROP_KILL_DEAD_CODE to
subsequent propagate_block calls, since removing or acting as
removing dead code can affect global register liveness, which
is supposed to be finalized for this call after this loop. */
stabilized_prop_flags
&= ~(PROP_SCAN_DEAD_CODE | PROP_KILL_DEAD_CODE);
if (! changed)
break;
/* We repeat regardless of what cleanup_cfg says. If there were
instructions deleted above, that might have been only a
partial improvement (see MAX_MEM_SET_LIST_LEN usage).
Further improvement may be possible. */
cleanup_cfg (CLEANUP_EXPENSIVE);
}
/* If asked, remove notes from the blocks we'll update. */
@ -697,7 +711,7 @@ update_life_info (blocks, extent, prop_flags)
basic_block bb = BASIC_BLOCK (i);
COPY_REG_SET (tmp, bb->global_live_at_end);
propagate_block (bb, tmp, NULL, NULL, prop_flags);
propagate_block (bb, tmp, NULL, NULL, stabilized_prop_flags);
if (extent == UPDATE_LIFE_LOCAL)
verify_local_live_at_start (tmp, bb);
@ -710,7 +724,8 @@ update_life_info (blocks, extent, prop_flags)
basic_block bb = BASIC_BLOCK (i);
COPY_REG_SET (tmp, bb->global_live_at_end);
propagate_block (bb, tmp, NULL, NULL, prop_flags);
propagate_block (bb, tmp, NULL, NULL, stabilized_prop_flags);
if (extent == UPDATE_LIFE_LOCAL)
verify_local_live_at_start (tmp, bb);