https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115876
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever confirmed|0 |1 Last reconfirmed| |2024-07-11 --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- All of except the last one could be fixed is mask is changed to `unsigned HOST_WIDE_INT`. The last one is: bit = subreg_lsb (y).to_constant (); if (dst_mask) { dst_mask <<= bit; if (!dst_mask) dst_mask = -0x100000000ULL; } is definitely broken and I am not sure I understand the logic here even. because I don't know if it is saying if bit == BITS_PER_HOST_WIDE_INT, then it should be -0x100000000ULL . Note ULL here seems also wrong, it should be using HOST_WIDE_INT_C (this is wrong in the whole file too).