fix alpha eh regressions
Jan Hubicka
jh@suse.cz
Mon Mar 25 00:49:00 GMT 2002
> Jan's patch of the 18'th,
>
> * recog.c (peephole2_optimize): Re-distribute EH edges.
>
> wasn't really complete. If, after the split, the call was not at the end
> of the block, then we'd remove the EH edge and clean up dead code, which
> would remove the exception handler entirely. Not good.
Uhm... I am sorry, it got into my mind but somehow I forced myself to believe
the call is not needed.
> + /* If we eliminated EH edges, we may be able to merge blocks. Further,
> + we've changed global life since exception handlers are no longer
> + reachable. */
> + if (do_cleanup_cfg)
> + {
> + cleanup_cfg (0);
> + update_life_info (0, UPDATE_LIFE_GLOBAL_RM_NOTES, PROP_DEATH_NOTES);
> + }
> #ifdef HAVE_conditional_execution
> ! else
> ! {
> ! count_or_remove_death_notes (blocks, 1);
> ! update_life_info (blocks, UPDATE_LIFE_LOCAL, PROP_DEATH_NOTES);
> ! }
For mainline we should probably use the dirty blocks, as they can avoid
recomputing in blocks we didn't changed anything.
Honza
> sbitmap_free (blocks);
> #endif
> }
More information about the Gcc-patches
mailing list