On Fri, 20 Nov 2015, Tom de Vries wrote: > On 20/11/15 14:29, Richard Biener wrote: > > I agree it's somewhat of an odd behavior but all passes should > > either be placed in a sub-pipeline with an outer > > loop_optimizer_init()/finalize () call or call both themselves. > > Hmm, but adding loop_optimizer_finalize at the end of pass_lim breaks the loop > pipeline. > > We could use the style used in pass_slp_vectorize::execute: > ... > pass_slp_vectorize::execute (function *fun) > { > basic_block bb; > > bool in_loop_pipeline = scev_initialized_p (); > if (!in_loop_pipeline) > { > loop_optimizer_init (LOOPS_NORMAL); > scev_initialize (); > } > > ... > > if (!in_loop_pipeline) > { > scev_finalize (); > loop_optimizer_finalize (); > } > ... > > Although that doesn't strike me as particularly clean.
At least it would be a consistent "unclean" style. So yes, the above would work for me. Thanks, Richard.