[PATCH] __builtin_expect cleanup for iconvdata/*.c

Florian Weimer fweimer@redhat.com
Mon Sep 8 23:14:00 GMT 2014


On 09/08/2014 11:04 PM, Kalle Olavi Niemitalo wrote:
> Florian Weimer <fweimer@redhat.com> writes:
>
>> --- a/iconvdata/iso-2022-cn.c
>> +++ b/iconvdata/iso-2022-cn.c
>> @@ -126,22 +126,22 @@ enum
>>         STANDARD_FROM_LOOP_ERR_HANDLER (1);				      \
>>   									      \
>>       /* Recognize escape sequences.  */					      \
>> -    if (__builtin_expect (ch, 0) == ESC)				      \
>> +    if (__glibc_unlikely (ch) == ESC)					      \
>
> Shouldn't that be __glibc_unlikely (ch == ESC)?
> I guess it makes no difference in practice, but it looks wrong.
> There are other changes like that, for example:
>
> -	if (__builtin_expect (found, 1) != __UNKNOWN_10646_CHAR)	      \
> +	if (__glibc_likely (found) != __UNKNOWN_10646_CHAR)		      \

Right, these changes are technically correct (they are un-expanding the 
macro definitions), but they are even uglier than the original code. 
I'll work on a regenerated patch with additional heuristics to cover this.

-- 
Florian Weimer / Red Hat Product Security



More information about the Libc-alpha mailing list