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