Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 29 May 2016 12:39:33 -0700
From:      Conrad Meyer <cem@FreeBSD.org>
To:        "Andrey A. Chernov" <ache@freebsd.org>
Cc:        src-committers <src-committers@freebsd.org>, svn-src-all@freebsd.org,  svn-src-head@freebsd.org
Subject:   Re: svn commit: r300965 - head/lib/libc/stdlib
Message-ID:  <CAG6CVpXuoetY2GvV7Zonueb0TvQfRcMAHQYLXhd6yab5Mi%2BR0Q@mail.gmail.com>
In-Reply-To: <201605291639.u4TGdSwq032144@repo.freebsd.org>
References:  <201605291639.u4TGdSwq032144@repo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Does clang actually generate different code with this change?

On Sun, May 29, 2016 at 9:39 AM, Andrey A. Chernov <ache@freebsd.org> wrote:
> Author: ache
> Date: Sun May 29 16:39:28 2016
> New Revision: 300965
> URL: https://svnweb.freebsd.org/changeset/base/300965
>
> Log:
>   Micro optimize: C standard guarantees that right shift for unsigned value
>   fills left bits with zero, and we have exact 32bit unsigned value
>   (uint32_t), so there is no reason to add "& 0x7fffffff" here.
>
>   MFC after:      1 week
>
> Modified:
>   head/lib/libc/stdlib/random.c
>
> Modified: head/lib/libc/stdlib/random.c
> ==============================================================================
> --- head/lib/libc/stdlib/random.c       Sun May 29 16:32:56 2016        (r300964)
> +++ head/lib/libc/stdlib/random.c       Sun May 29 16:39:28 2016        (r300965)
> @@ -430,7 +430,7 @@ random(void)
>                  */
>                 f = fptr; r = rptr;
>                 *f += *r;
> -               i = (*f >> 1) & 0x7fffffff;     /* chucking least random bit */
> +               i = *f >> 1;    /* chucking least random bit */
>                 if (++f >= end_ptr) {
>                         f = state;
>                         ++r;
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAG6CVpXuoetY2GvV7Zonueb0TvQfRcMAHQYLXhd6yab5Mi%2BR0Q>