This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[Patch (preapproved)] Guard Copy Header pass on flag_tree_loop_vectorize
- From: James Greenhalgh <james dot greenhalgh at arm dot com>
- To: <gcc-patches at gcc dot gnu dot org>
- Cc: <nd at arm dot com>, <bin dot cheng at arm dot com>, <richard dot guenther at gmail dot com>
- Date: Thu, 27 Jul 2017 12:43:26 +0100
- Subject: [Patch (preapproved)] Guard Copy Header pass on flag_tree_loop_vectorize
- Authentication-results: sourceware.org; auth=none
- Authentication-results: spf=pass (sender IP is 217.140.96.140) smtp.mailfrom=arm.com; gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=bestguesspass action=none header.from=arm.com;
- Nodisclaimer: True
- Spamdiagnosticmetadata: NSPM
- Spamdiagnosticoutput: 1:99
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.greenhalgh@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)