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

--- Comment #4 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Andrew Pinski <pins...@gcc.gnu.org>:

https://gcc.gnu.org/g:add4bb94459d6cecae11de279b49f9c1acb14394

commit r15-5022-gadd4bb94459d6cecae11de279b49f9c1acb14394
Author: Andrew Pinski <quic_apin...@quicinc.com>
Date:   Fri Nov 1 23:12:52 2024 -0700

    VN: Handle `(A CMP B) !=/== 0` for predicates [PR117414]

    After the last patch, we also want to record `(A CMP B) != 0`
    as `(A CMP B)` and `(A CMP B) == 0` as `(A CMP B)` with the
    true/false edges swapped.

    This shows up more due to the new handling of
    `(A | B) ==/!= 0` in insert_predicates_for_cond
    as now we can notice these comparisons which were not seen before.

    This is enough to fix the original issue in `gcc.dg/tree-ssa/pr111456-1.c`
    and make sure we don't regress it when enhancing ifcombine.

    This adds that predicate and allows us to optimize f
    in fre-predicated-3.c.

    Changes since v1:
    * v2:  Use vn_valueize.

    Bootstrapped and tested on x86_64-linux-gnu.

            PR tree-optimization/117414

    gcc/ChangeLog:

            * tree-ssa-sccvn.cc (insert_predicates_for_cond): Handle `(A CMP B)
!=/== 0`.

    gcc/testsuite/ChangeLog:

            * gcc.dg/tree-ssa/fre-predicated-3.c: New test.

    Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com>

Reply via email to