私が持っている場合:
#define likely(x) __builtin_expect((x),1)
#define unlikely(x) __builtin_expect((x),0)
if (A)
return true;
else if (B)
return false;
...
else if (Z)
return true;
else
//this will never really happen!!!!
raiseError();
return false;
else if (likely(Z))
コンパイラが前のチェックの分岐予測に影響を与えることなく、最後のステートメント (else) が非常にありそうにないことを示すために、最後の条件チェックの周りに like() を配置できますか?
基本的に、GCC は、分岐予測ヒントを含む単一の条件ステートメントがある場合、if-else if ブロック全体を最適化しようとしますか?