https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118659
--- Comment #2 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:adefadda3e87f693f20f0b2b34bced00aa525207 commit r16-341-gadefadda3e87f693f20f0b2b34bced00aa525207 Author: Andrew Pinski <quic_apin...@quicinc.com> Date: Thu May 1 00:14:27 2025 -0700 get_known_nonzero_bits_1 should use wi::bit_and_not [PR118659] While looking into bitwise optimizations, I noticed that get_known_nonzero_bits_1 does `bm.value () & ~bm.mask ()` which is ok except it creates a temporary wide_int. Instead if we use wi::bit_and_not, we can avoid the temporary and on some targets use the andn/bic instruction. Bootstrapped and tested on x86_64-linux-gnu. gcc/ChangeLog: PR tree-optimization/118659 * tree-ssanames.cc (get_known_nonzero_bits_1): Use wi::bit_and_not instead of `a & ~b`. Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com>