Since when is LEFT shifting a signed number undefined. It is RIGHT
shifting that’s undefined…

Warner


> On Aug 9, 2015, at 5:06 AM, Dimitry Andric <d...@freebsd.org> wrote:
> 
> Author: dim
> Date: Sun Aug  9 11:06:40 2015
> New Revision: 286519
> URL: https://svnweb.freebsd.org/changeset/base/286519
> 
> Log:
>  In GNU as, avoid left-shifting negative integers, which is undefined.
> 
>  MFC after:   3 days
> 
> Modified:
>  head/contrib/binutils/gas/config/tc-i386.c
> 
> Modified: head/contrib/binutils/gas/config/tc-i386.c
> ==============================================================================
> --- head/contrib/binutils/gas/config/tc-i386.c        Sun Aug  9 10:36:25 
> 2015        (r286518)
> +++ head/contrib/binutils/gas/config/tc-i386.c        Sun Aug  9 11:06:40 
> 2015        (r286519)
> @@ -914,8 +914,8 @@ fits_in_signed_long (offsetT num ATTRIBU
> #ifndef BFD64
>   return 1;
> #else
> -  return (!(((offsetT) -1 << 31) & num)
> -       || (((offsetT) -1 << 31) & num) == ((offsetT) -1 << 31));
> +  return (!(-((offsetT) 1 << 31) & num)
> +       || (-((offsetT) 1 << 31) & num) == -((offsetT) 1 << 31));
> #endif
> }                             /* fits_in_signed_long() */
> 
> 

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Reply via email to