コンパイラにどちらの分岐が最適化をするか示す(__builtin_expect)

Cのソースコードでif文を見ると、likelyとかunlikelyとか良く見かける。このコードは、__builtin_expectを呼び出している。これをちょっと見てみた。ソースコード上では、GCC2のばあい、ヘッダーファイルで__builtin_expectが定義されている。しかし、GCC3を使うと、compiler.hで__builtin_expectが定義されていない。これは、GCCの中に取り込まれたためらしい。ちなみに、Xenは、GCC3が前提なのでそのパターンであり,
__builtin_expectをソースコードで定義されていない。
ついでだが、GCCの組み込み関数は、ここで定義されているみたい。
https://www.codeblog.org/gonzui/markup/gcc-4.1.0/gcc/builtins.c?q=fundef%3Aexpand_builtin_expect#l4610
2004-07-27
http://www.issei.org/diary/_20030224/d200101a.html#05