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

--- Comment #21 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:acbfb8b9495b802e414e6ab94b810ef7b0c8aa1d

commit r14-6418-gacbfb8b9495b802e414e6ab94b810ef7b0c8aa1d
Author: Andrew Pinski <quic_apin...@quicinc.com>
Date:   Sat Dec 9 13:43:23 2023 -0800

    expr: catch more `a*bool` while expanding  [PR 112935]

    After r14-1655-g52c92fb3f40050 (and the other commits
    which touch zero_one_valued_p), we end up with a with
    `bool * a` but where the bool is an SSA name that might not
    have non-zero bits set on it (to 0x1) even though it
    does the non-zero bits would be 0x1.
    The case of coremarks, it is only phiopt4 which adds the new
    ssa name and nothing afterwards updates the nonzero bits on it.
    This fixes the regression by using gimple_zero_one_valued_p
    rather than tree_nonzero_bits to match the cases where the
    SSA_NAME didn't have the non-zero bits set.
    gimple_zero_one_valued_p handles one level of cast and also
    and an `&`.

    Bootstrapped and tested on x86_64-linux-gnu.

    gcc/ChangeLog:

            PR middle-end/112935
            * expr.cc (expand_expr_real_2): Use
            gimple_zero_one_valued_p instead of tree_nonzero_bits
            to find boolean defined expressions.

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

Reply via email to