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