GCC Branch Prediction

Table of Contents

1. GCC Branch Prediction

gcc 会通过三种方式计算 branch 的 probability:

  1. 通过 __builtin_expect 这类的 hint
  2. 通过内置的一些 heuristics
  3. 通过 profile

这几种优化通常都需要 `O1` 及以上的优化级别.

其中:

  1. profile_estimate 这个 tree pass 负责针对 1 和 2 生成 branch probability 信息.
  2. 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

Author: [email protected]
Date: 2023-01-17 Tue 15:53
Last updated: 2023-06-07 Wed 19:17

知识共享许可协议