Possible wrong-way example in gcc4-4-2 documentation of __builtin_expect

Segher Boessenkool segher@kernel.crashing.org
Tue Dec 20 12:47:00 GMT 2011


> The online docs at
> http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Other-Builtins.html
> has a confusing (to me) example of __builtin_expect.  Could someone  
> take a look at this?
>
> <start quote from above-referenced page>
>   Since you are limited to integral expressions for exp, you should
>   use constructions such as
>
>           if (__builtin_expect (ptr != NULL, 1))
>             error ();
> <end quote>
>
> This seems backwards.    The return value of __builtin_expect
> is the first argument, namely (ptr != NULL), which presumably is  
> true in the NON-error case.   The following example might be more  
> helpful:
>
>           if (__builtin_expect (ptr == NULL, 0))
>             error ();
>
> Apologies if I'm not reading this correctly.

The point of the example is that you cannot write

           if (__builtin_expect (ptr, 1))
             error ();

so the "!= NULL" is important here.  But you are right that
"error ()" is a bit unexpected; care to send a patch that changes
it to e.g. "do_something ()"?


Segher



More information about the Gcc mailing list