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. 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.
diff --git a/gcc/tree-ssa-loop-ch.c b/gcc/tree-ssa-loop-ch.c index 86be34a..14cc6d8d 100644 --- a/gcc/tree-ssa-loop-ch.c +++ b/gcc/tree-ssa-loop-ch.c @@ -436,7 +436,7 @@ pass_ch::process_loop_p (struct loop *loop) bool pass_ch_vect::process_loop_p (struct loop *loop) { - if (!flag_tree_vectorize && !loop->force_vectorize) + if (!flag_tree_loop_vectorize && !loop->force_vectorize) return false; if (loop->dont_vectorize)