https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112374

--- Comment #48 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:172a72da368146e0fe34194020eb7a6636db4438

commit r14-5556-g172a72da368146e0fe34194020eb7a6636db4438
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Fri Nov 17 15:09:44 2023 +0100

    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  <ja...@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.

Reply via email to