https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102134
--- Comment #8 from Roger Sayle <roger at nextmovesoftware dot com> --- It's even more complicated than that. According to wi::clz, if the unsigned value being stored has a precision that is a multiple of HOST_WIDE_INT it's sign-extended, and for all other precisions they are zero extended. The sign bit is taken from the most significant word in the vector.