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).

Reply via email to