https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67413
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- As for the other testcase: y_3 = x_2(D) & -4294967296; z_4 = (intD.9) x_2(D); _1 = (long intD.12) z_4; _5 = _1 | y_3; If we could optimize: z_4 = (intD.9) x_2(D); _1 = (long intD.12) z_4; Into: _1 = x_2(D) & 4294967295; It would just work.