This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Avoid undefined shifts in mask_rtx
- From: kenner at vlsi1 dot ultra dot nyu dot edu (Richard Kenner)
- To: gcc-patches at gcc dot gnu dot org
- Date: Fri, 18 Apr 03 18:32:32 EDT
- Subject: Avoid undefined shifts in mask_rtx
Tested on i686-pc-linux-gnu.
Thu Nov 21 10:59:22 2002 Richard Kenner <kenner at vlsi1 dot ultra dot nyu dot edu>
* expmed.c (mask_rtx): Avoid undefined shifts for BITSIZE of 0.
*** gcc/expmed.c 22 Feb 2003 10:02:29 -0000 1.131
--- gcc/expmed.c 15 Apr 2003 20:11:53 -0000
*************** mask_rtx (mode, bitpos, bitsize, complem
*** 1699,1703 ****
HOST_WIDE_INT masklow, maskhigh;
! if (bitpos < HOST_BITS_PER_WIDE_INT)
masklow = (HOST_WIDE_INT) -1 << bitpos;
else
--- 1699,1705 ----
HOST_WIDE_INT masklow, maskhigh;
! if (bitsize == 0)
! masklow = 0;
! else if (bitpos < HOST_BITS_PER_WIDE_INT)
masklow = (HOST_WIDE_INT) -1 << bitpos;
else
*************** mask_rtx (mode, bitpos, bitsize, complem
*** 1713,1717 ****
maskhigh = (HOST_WIDE_INT) -1 << (bitpos - HOST_BITS_PER_WIDE_INT);
! if (bitpos + bitsize > HOST_BITS_PER_WIDE_INT)
maskhigh &= ((unsigned HOST_WIDE_INT) -1
>> (2 * HOST_BITS_PER_WIDE_INT - bitpos - bitsize));
--- 1715,1721 ----
maskhigh = (HOST_WIDE_INT) -1 << (bitpos - HOST_BITS_PER_WIDE_INT);
! if (bitsize == 0)
! maskhigh = 0;
! else if (bitpos + bitsize > HOST_BITS_PER_WIDE_INT)
maskhigh &= ((unsigned HOST_WIDE_INT) -1
>> (2 * HOST_BITS_PER_WIDE_INT - bitpos - bitsize));