rtl-optimization/105577 - RTL DSE and non-call EH
When one of the first two stages of DSE removes a throwing stmt we have to purge dead EH edges before the DF re-analyze fires off a fast DCE since that cannot cope with the situation. 2022-05-12 Richard Biener <rguenther@suse.de> PR rtl-optimization/105577 * dse.cc (rest_of_handle_dse): Make sure to purge dead EH edges before running fast DCE via df_analyze.
This commit is contained in:
parent
c4471a4a3c
commit
dfda40f814
1 changed files with 10 additions and 0 deletions
10
gcc/dse.cc
10
gcc/dse.cc
|
@ -3682,6 +3682,16 @@ rest_of_handle_dse (void)
|
|||
|
||||
dse_step0 ();
|
||||
dse_step1 ();
|
||||
/* DSE can eliminate potentially-trapping MEMs.
|
||||
Remove any EH edges associated with them, since otherwise
|
||||
DF_LR_RUN_DCE will complain later. */
|
||||
if ((locally_deleted || globally_deleted)
|
||||
&& cfun->can_throw_non_call_exceptions
|
||||
&& purge_all_dead_edges ())
|
||||
{
|
||||
free_dominance_info (CDI_DOMINATORS);
|
||||
delete_unreachable_blocks ();
|
||||
}
|
||||
dse_step2_init ();
|
||||
if (dse_step2 ())
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue