On Thu, Jul 27, 2017 at 02:26:03PM +0200, Richard Biener wrote:
> On Thu, Jul 27, 2017 at 2:08 PM, Jakub Jelinek <ja...@redhat.com> wrote:
> > On Thu, Jul 27, 2017 at 01:54:21PM +0200, Richard Biener wrote:
> >> --- gcc/common.opt      (revision 250619)
> >> +++ gcc/common.opt      (working copy)
> >>  ftree-vectorize
> >> -Common Report Var(flag_tree_vectorize) Optimization
> >> +Common Report Optimization
> >>  Enable vectorization on trees.
> >>
> >>  ftree-vectorizer-verbose=
> >>
> >> which shows a few other uses of flag_tree_vectorize:
> >>
> >> int
> >> omp_max_vf (void)
> >> {
> >>   if (!optimize
> >>       || optimize_debug
> >>       || !flag_tree_loop_optimize
> >>       || (!flag_tree_loop_vectorize
> >>           && (global_options_set.x_flag_tree_loop_vectorize
> >>               || global_options_set.x_flag_tree_vectorize)))
> >>     return 1;
> >>
> >> not sure what that was supposed to test.  Jakub?  Similar
> >> use in expand_omp_simd.
> >
> > The intent is/was to check if the vectorizer pass will be invoked,
> > otherwise it makes no sense to generate the arrays.
> > So, for -O0/-Og or -fno-tree-loop-optimize, we know that the pass
> > isn't even in the pipeline.
> > And otherwise the intent was that we try to optimize, unless
> > user asked explicitly -fno-tree-loop-vectorize or -fno-tree-vectorize
> > not to optimize.  Because the vect pass is enabled if:
> > flag_tree_loop_vectorize || fun->has_force_vectorize_loops
> > but returning non-zero from omp_max_vf and the other omp spot means
> > there will be cfun->has_force_vectorize_loops.
> 
> I see.  So it would be good to try if adding EnabledBy(ftree-vectorize) to
> ftree-loop-vectorize/ftree-slp-vectorize would add those to global_options_set
> iff -ftree-vectorize is enabled (the opts.c hunk setting the flags is then
> redundant as well I guess).

This looks like it works.

I'll prepare the patch and put it through a full bootstrap cycle.

Thanks,
James

Reply via email to