]> gcc.gnu.org Git - gcc.git/commit
vect: Fix check_reduction_path [PR112374]
authorJakub Jelinek <jakub@redhat.com>
Fri, 17 Nov 2023 14:09:44 +0000 (15:09 +0100)
committerJakub Jelinek <jakub@redhat.com>
Fri, 17 Nov 2023 14:09:44 +0000 (15:09 +0100)
commit172a72da368146e0fe34194020eb7a6636db4438
treebc653304a14c63356307aad107f3762e9c88e7cb
parent04abafe9831f6867af1211ecae853ff373235b2d
vect: Fix check_reduction_path [PR112374]

As mentioned in the PR, the intent of the r14-5076 changes was that
it doesn't count one of the uses on the use_stmt, but what actually
got implemented is that it does this processing on any op_use_stmt,
even if it is not the use_stmt statement, which means that it
can increase count even on debug stmts (-fcompare-debug failures),
or if there would be some other use stmt with 2+ uses it could count
that as a single use.  Though, because it fails whenever cnt != 1
and I believe use_stmt must be one of the uses, it would probably
fail in the latter case anyway.

The following patch fixes that by doing this extra processing only when
op_use_stmt is use_stmt, and using the normal processing otherwise
(so ignore debug stmts, and increase on any uses on the stmt).

2023-11-17  Jakub Jelinek  <jakub@redhat.com>

PR tree-optimization/112374
* tree-vect-loop.cc (check_reduction_path): Perform the cond_fn_p
special case only if op_use_stmt == use_stmt, use as_a rather than
dyn_cast in that case.

* gcc.dg/pr112374-1.c: New test.
* gcc.dg/pr112374-2.c: New test.
* g++.dg/opt/pr112374.C: New test.
gcc/testsuite/g++.dg/opt/pr112374.C [new file with mode: 0644]
gcc/testsuite/gcc.dg/pr112374-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/pr112374-2.c [new file with mode: 0644]
gcc/tree-vect-loop.cc
This page took 0.067867 seconds and 6 git commands to generate.