GCC Branch Prediction
Table of Contents
1. GCC Branch Prediction
gcc 会通过三种方式计算 branch 的 probability:
- 通过 __builtin_expect 这类的 hint
- 通过内置的一些 heuristics
- 通过 profile
这几种优化通常都需要 `O1` 及以上的优化级别.
其中:
- profile_estimate 这个 tree pass 负责针对 1 和 2 生成 branch probability 信息.
- profile 这 ipa pass 负责针对 3 生成信息
最后需要 bbro 这个 rtl pass 根据 profile 信息完成代码块的移动, 例如把 if (a) x
else y
变成 if (!a) y else x
Backlinks
GCC Profile (GCC Profile): 1. branch prediction