This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]