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