diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cfgexpand.c | 8 | ||||
-rw-r--r-- | gcc/passes.c | 8 | ||||
-rw-r--r-- | gcc/trans-mem.c | 2 |
4 files changed, 23 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4ee565b..5c3f579 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2017-05-11 Richard Biener <rguenther@suse.de> + + * passes.c (execute_function_todo): Verify loops if they are + said to be up-to-date. + * cfgexpand.c (pass_expand::execute): Discard loops for -dx. + * trans-mem.c (pass_tm_edges::execute): Mark loops for fixup. + 2017-05-10 John David Anglin <danglin@gcc.gnu.org> PR target/80090 diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index 66af699..e38c8e4 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -6542,6 +6542,14 @@ pass_expand::execute (function *fun) set_block_levels (DECL_INITIAL (fun->decl), 0); default_rtl_profile (); + /* For -dx discard loops now, otherwise IL verify in clean_state will + ICE. */ + if (rtl_dump_and_exit) + { + cfun->curr_properties &= ~PROP_loops; + loop_optimizer_finalize (); + } + timevar_pop (TV_POST_EXPAND); return 0; diff --git a/gcc/passes.c b/gcc/passes.c index 185c3cd..911495e 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -1979,8 +1979,12 @@ execute_function_todo (function *fn, void *data) && !from_ipa_pass) verify_flow_info (); if (current_loops - && loops_state_satisfies_p (LOOP_CLOSED_SSA)) - verify_loop_closed_ssa (false); + && ! loops_state_satisfies_p (LOOPS_NEED_FIXUP)) + { + verify_loop_structure (); + if (loops_state_satisfies_p (LOOP_CLOSED_SSA)) + verify_loop_closed_ssa (false); + } if (cfun->curr_properties & PROP_rtl) verify_rtl_sharing (); } diff --git a/gcc/trans-mem.c b/gcc/trans-mem.c index 4409bea..b564d36 100644 --- a/gcc/trans-mem.c +++ b/gcc/trans-mem.c @@ -3369,6 +3369,8 @@ pass_tm_edges::execute (function *fun) must be rebuilt completely. Otherwise we'll crash trying to update the SSA web in the TODO section following this pass. */ free_dominance_info (CDI_DOMINATORS); + /* We'ge also wrecked loops badly with inserting of abnormal edges. */ + loops_state_set (LOOPS_NEED_FIXUP); bitmap_obstack_release (&tm_obstack); all_tm_regions = NULL; |