On Fri, Mar 09, 2018 at 02:23:13PM +0100, Richard Biener wrote: > > With -Os we inhibit most loop header copying which in turn will disable > any vectorization attempt either via -fopenmp or via -ftree-vectorize. > > The following makes sure the aggressive gate in > should_duplicate_loop_header_p is not applied for force-vectorize loops. > There's still PARAM_MAX_LOOP_HEADER_INSNS limiting growth. > > This reportedly makes -fopenmp -Os vectorize loops properly. > > Bootstrap / regtest running on x86_64-unknown-linux-gnu. > > Is this OK for trunk (and branches?) or do we want sth different > in the end?
LGTM. > 2018-03-09 Richard Biener <rguent...@suse.de> > > PR tree-optimization/84777 > * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For > force-vectorize loops ignore whether we are optimizing for size. > > Index: gcc/tree-ssa-loop-ch.c > =================================================================== > --- gcc/tree-ssa-loop-ch.c (revision 258380) > +++ gcc/tree-ssa-loop-ch.c (working copy) > @@ -57,7 +57,8 @@ should_duplicate_loop_header_p (basic_bl > be true, since quite often it is possible to verify that the condition > is > satisfied in the first iteration and therefore to eliminate it. Jump > threading handles these cases now. */ > - if (optimize_loop_for_size_p (loop)) > + if (optimize_loop_for_size_p (loop) > + && !loop->force_vectorize) > { > if (dump_file && (dump_flags & TDF_DETAILS)) > fprintf (dump_file, Jakub