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>