On 5/25/22 13:55, Jakub Jelinek wrote:
> On Wed, May 25, 2022 at 01:52:46PM +0200, Martin Liška wrote:
>> Similarly to g:22d9c8802add09a93308319fc37dd3a0f1125393, I would like to use
>> {UN,}LIKELY macros in libgomp. If the community is fine, I'm planning doing
>> the same in other GCC's libraries.
> 
> I must say I prefer __builtin_expect over the macros any time.
> 
>       Jakub
> 

I respect that.

Btw. I noticed one discrepancy:

./libgomp/loop_ull.c:

            /* Cheap overflow protection.  */
            if (__builtin_expect ((nthreads | ws->chunk_size_ull)
                                  < 1ULL << (sizeof (gomp_ull)
                                             * __CHAR_BIT__ / 2 - 1), 1))
              ws->mode = ws->end_ull < (__LONG_LONG_MAX__ * 2ULL + 1
                                        - (nthreads + 1) * ws->chunk_size_ull);

while:

./libgomp/loop.c:

            /* Cheap overflow protection.  */
            if (__builtin_expect ((nthreads | ws->chunk_size)
                                  >= 1UL << (sizeof (long)
                                             * __CHAR_BIT__ / 2 - 1), 0))
              ws->mode = 0;

So once, it uses __builtin_expect(..., 1) and second time __builtin_expect(..., 
0).
Is it expected?

Thanks,
Martin

Reply via email to