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

--- Comment #12 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:903ab914dd48c3131ded0cf427da50c23168024c

commit r15-6929-g903ab914dd48c3131ded0cf427da50c23168024c
Author: Andrew Pinski <quic_apin...@quicinc.com>
Date:   Tue Jan 14 19:38:47 2025 -0800

    match: Simplify `1 >> x` into `x == 0` [PR102705]

    This in this PR we have missed optimization where we miss that,
    `1 >> x` and `(1 >> x) ^ 1` can't be equal. There are a few ways of
    optimizing this, the easiest and simpliest is to simplify `1 >> x` into
    just `x == 0` as those are equivalant (if we ignore out of range values for
x).
    we already have an optimization for `(1 >> X) !=/== 0` so the only
difference
    here is we don't need the `!=/== 0` part to do the transformation.

    So this removes the `(1 >> X) !=/== 0` transformation and just adds a
simplfied
    `1 >> x` -> `x == 0` one.

    Bootstrapped and tested on x86_64-linux-gnu.

            PR tree-optimization/102705

    gcc/ChangeLog:

            * match.pd (`(1 >> X) != 0`): Remove pattern.
            (`1 >> x`): New pattern.

    gcc/testsuite/ChangeLog:

            * gcc.dg/tree-ssa/pr105832-2.c: Update testcase.
            * gcc.dg/tree-ssa/pr96669-1.c: Likewise.
            * gcc.dg/tree-ssa/pr102705-1.c: New test.
            * gcc.dg/tree-ssa/pr102705-2.c: New test.

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

Reply via email to