svn commit: r300965 - head/lib/libc/stdlib
Andrey Chernov
ache at freebsd.org
Sun May 29 20:20:59 UTC 2016
On 29.05.2016 22:39, Conrad Meyer wrote:
> Does clang actually generate different code with this change?
Yes, without -O it generates
andl $2147483647, ...
With -O nothing is changed.
In general, it can be not clang and I see no point to left junk code in
any case.
>
> On Sun, May 29, 2016 at 9:39 AM, Andrey A. Chernov <ache at 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;
>>
>
More information about the svn-src-all
mailing list