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). Richard. > Jakub