https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87138

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Created attachment 44626
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=44626&action=edit
gcc9-pr87138.patch

That revision just uncovered a latent bug in expand_mult_const.  If val_so_far
is above HOST_WIDE_INT_MAX and nmode is wider than 64-bits, it adds an
incorrect REG_EQUAL note, says the partial result is equal to const_int
0x8000000000000000, which is a negative value of (__int128) (- LONG_MAX - 1),
but it should actually use const_wide_int 0x08000000000000000 instead (or
const_double if const_wide_int isn't supported).

Reply via email to