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]

Re: [PATCH] rs6000: Follow up for signed integer overflow fix


On Thu, Nov 20, 2014 at 07:41:43PM +0100, Markus Trippelsdorf wrote:
> 2014-11-20  Markus Trippelsdorf  <markus@trippelsdorf.de>
> 
> 	* config/rs6000/rs6000.c (includes_rldic_lshift_p): Cast 0 to unsigned.
> 	(includes_rldicr_lshift_p): Likewise.
> 
> diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
> index a9604cf3fa97..d7958b33ba1a 100644
> --- a/gcc/config/rs6000/rs6000.c
> +++ b/gcc/config/rs6000/rs6000.c
> @@ -16197,10 +16197,10 @@ includes_rldic_lshift_p (rtx shiftop, rtx andop)
>        unsigned HOST_WIDE_INT c, lsb, shift_mask;
>  
>        c = INTVAL (andop);
> -      if (c == 0 || c == ~0)
> +      if (c == 0 || c == ~(unsigned HOST_WIDE_INT) 0)
>  	return 0;
>  
> -      shift_mask = ~0;
> +      shift_mask = ~(unsigned HOST_WIDE_INT) 0;
>        shift_mask <<= INTVAL (shiftop);
>  
>        /* Find the least significant one bit.  */
> @@ -16235,7 +16235,7 @@ includes_rldicr_lshift_p (rtx shiftop, rtx andop)
>      {
>        unsigned HOST_WIDE_INT c, lsb, shift_mask;
>  
> -      shift_mask = ~0;
> +      shift_mask = ~(unsigned HOST_WIDE_INT) 0;
>        shift_mask <<= INTVAL (shiftop);
>        c = INTVAL (andop);

You could use ~HOST_WIDE_INT_UC (0) in all the 3 cases.

	Jakub


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