On 20/11/15 11:37, Richard Biener wrote:
I'd rather make loop_optimizer_init do nothing if requested flags are already set and no fixup is needed
Thus sth like Index: gcc/loop-init.c =================================================================== --- gcc/loop-init.c (revision 230649) +++ gcc/loop-init.c (working copy) @@ -103,7 +103,11 @@ loop_optimizer_init (unsigned flags) calculate_dominance_info (CDI_DOMINATORS); if (!needs_fixup) - checking_verify_loop_structure (); + { + checking_verify_loop_structure (); + if (loops_state_satisfies_p (flags)) + goto out;
What about flags that are present in the loops state, but not requested in flags? Should we try to clear those flags?
Thanks, - Tom
+ } /* Clear all flags. */ if (recorded_exits) @@ -122,11 +126,12 @@ loop_optimizer_init (unsigned flags) /* Apply flags to loops. */ apply_loop_flags (flags); + checking_verify_loop_structure (); + +out: /* Dump loops. */ flow_loops_dump (dump_file, NULL, 1); - checking_verify_loop_structure (); - timevar_pop (TV_LOOP_INIT); }