diff options
Diffstat (limited to 'gcc/loop-init.c')
-rw-r--r-- | gcc/loop-init.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/gcc/loop-init.c b/gcc/loop-init.c index 92d621e..664ff29 100644 --- a/gcc/loop-init.c +++ b/gcc/loop-init.c @@ -91,16 +91,27 @@ loop_optimizer_init (unsigned flags) } else { + bool recorded_exits = loops_state_satisfies_p (LOOPS_HAVE_RECORDED_EXITS); + gcc_assert (cfun->curr_properties & PROP_loops); /* Ensure that the dominators are computed, like flow_loops_find does. */ calculate_dominance_info (CDI_DOMINATORS); + if (loops_state_satisfies_p (LOOPS_NEED_FIXUP)) + { + loops_state_clear (~0U); + fix_loop_structure (NULL); + } + #ifdef ENABLE_CHECKING - verify_loop_structure (); + else + verify_loop_structure (); #endif /* Clear all flags. */ + if (recorded_exits) + release_recorded_exits (); loops_state_clear (~0U); } |