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:
parent
0c7c67f076
commit
566576e718
2 changed files with 25 additions and 3 deletions
|
@ -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.
|
||||
|
|
21
gcc/flow.c
21
gcc/flow.c
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue