https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112566
--- Comment #4 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- On Thu, 16 Nov 2023, jakub at gcc dot gnu.org via Gcc-bugs wrote: > ctz(ext(x)) == ctz(x) if UB on zero, In one direction, this should also be true for a narrowing conversion (changing ctz(narrow(x)) to ctz(x) might remove UB if x is nonzero but narrows to zero, but won't introduce UB, or change the result if narrow(x) is nonzero).