On Thu, Jul 27, 2017 at 1:43 PM, James Greenhalgh <james.greenha...@arm.com> wrote: > > Hi, > > While answering a user question on the equivalence of > -ftree-loop-vectorize + -ftree-slp-vectorize and -ftree-vectorize I > spotted one case which broke the equivalence. pass_ch::process_loop_p > was guarded on flag_tree_vectorize, meaning you would get it for > -ftree-vectorize, but not for -ftree-loop-vectorize/-ftree-slp-vectorize. > > This patch fixes that, getting rid of the only use of flag_tree_vectorize > in the code base. > > This was preapproved on IRC: > > <jgreenhalgh> binche01: Should the first check in > gcc/tree-ssa-loop-ch.c :: pass_ch_vect::process_loop_p really be on > !flag_tree_vectorize ? That seems to go against the documentation that > -ftree-vectorize is equivalent to -ftree-loop-vectorize > -ftree-slp-vectorize > <binche01> never noticed the condition. any trouble caused? > <jgreenhalgh> None that I know of, I was trying to answer a user > question of whether the flags were really equivalent, and spotted > that while grepping to confirm it > <binche01> don't know if header copy can enables slp with > -fno-tree-loop-vectorize. richi may have the answer. maybe you > can change it to flag_tree_loop_* see if there is breakage. > <richi> jgreenhalgh: we should remove flag_tree_vectorize > <richi> jgreenhalgh: patch pre-approved and change the CH flag check > to flag_tree_loop_vectorize > > Committed as r250619 after a successful bootstrap and test run on > aarch64-none-linux-gnu. > > I'm not sure what was meant by "remove flag_tree_vectorize" - the command line > option seems a bit too popular to deprecate it, and the options framework > doesn't like the idea of one option as an Alias of two others. So I've > left it in place pending further instructions.
I thought of Index: gcc/common.opt =================================================================== --- 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. I suppose it wants to check whether _any_ function has loop vectorization enabled (for some reason)? And this is an approximation only (doesn't work for one function with attribute(optimize("tree-loop-vectorize")). Thanks, Richard. > Thanks, > James > > --- > 2017-07-27 James Greenhalgh <james.greenha...@arm.com> > > * tree-ssa-loop-ch.c (pass_ch::process_loop_p): Guard on > flag_tree_loop_vectorize rather than flag_tree_vectorize. >