https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61682
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Created attachment 33057 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33057&action=edit gcc410-pr61682.patch Ugh, there seem to be multiple bugs in wi::mul_internal. The one that affects this testcase is that MULT_HIGHPART_EXPR of 1 times some value yields the other value rather than 0 or -1 (depending on sign of the other operand). But I don't see how the umul_ppmm optimized cases can handle MULT_HIGHPART_EXPR or the first umul_ppmm needs_overflow.