https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113774
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Created attachment 57359 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=57359&action=edit gcc14-pr113774.patch So far lightly tested optimization on the bitint lowering side which emits more optimal code for that (for the unsigned 255 -> 257 bit extension and m_upwards_2limb low is 3 and high is 4, so when processing first limb in the loop, the idx < 3 condition is always true (as idx is 0 or 2) and when processing the second limb in the loop, similarly idxp1 <= 3 condition is always true (as idxp1 is 1 or 3) while idxp1 == 3 still needs to be compared. This makes the PRE (or VN?) bug latent.