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)

Reply via email to