GCC是否有常规的“可能”途径

时间:2018-11-27 20:07:59

标签: gcc micro-optimization

您可以使用__builtin_expect来提示GCC有关特定分支可能性的提示。没有它,它是否有任何默认假设。也就是说,将类似

的代码
if(error) { /*unlikely path*/ return FAILURE;}
return SUCCESS;

比以下更好/更差

if(!error) {/*likely path*/ return SUCCESS;}
return FAILURE;

1 个答案:

答案 0 :(得分:1)

与任何现代编译器一样,gcc还将执行代码分析。如果代码分析产生了任何可用/可证明的信息,它将选择一些优化方法(参见基本块重排序)。 gcc至少会执行静态代码分析,而clang(也许使用扩展名)也会分析执行流程图。