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

--- Comment #5 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:e472527c7b45d23e8dfd0fb767a6e663b4bc136e

commit r15-307-ge472527c7b45d23e8dfd0fb767a6e663b4bc136e
Author: Andrew Pinski <quic_apin...@quicinc.com>
Date:   Tue Apr 30 14:45:26 2024 -0700

    MATCH: Add some more value_replacement simplifications (a != 0 ? expr : 0)
to match

    This adds a few more of what is currently done in phiopt's
value_replacement
    to match. I noticed this when I was hooking up phiopt's value_replacement
    code to use match and disabling the old code. But this can be done
    independently from the hooking up phiopt's value_replacement as phiopt
    is already hooked up for simplified versions already.

    /* a != 0 ? a / b : 0  -> a / b iff b is nonzero. */
    /* a != 0 ? a * b : 0 -> a * b */
    /* a != 0 ? a & b : 0 -> a & b */

    We prefer the `cond ? a : 0` forms to allow optimization of `a * cond`
which
    uses that form.

    Bootstrapped and tested on x86_64-linux-gnu with no regressions.

            PR tree-optimization/114894

    gcc/ChangeLog:

            * match.pd (`a != 0 ? a / b : 0`): New pattern.
            (`a != 0 ? a * b : 0`): New pattern.
            (`a != 0 ? a & b : 0`): New pattern.

    gcc/testsuite/ChangeLog:

            * gcc.dg/tree-ssa/phi-opt-value-5.c: New test.

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

Reply via email to