BasicBlockPathClothing

该 Pass 目的是 -fbasic-block-sections=list 编译选项,它的目标是:

  • 根据运行时 profile 或离线分析的热点路径对基本块进行聚类
  • 通过克隆热路径,让热点路径在 layout 上连续,优化分支预测和指令缓存命中率;
  • 后续 BasicBlockSections Pass 会根据克隆后 block 的 BBID 来创建 section,对每段代码独立放置、优化布局。
    一句话:

BasicBlockPathCloning 是一个 LLVM 中的 MachineFunction-level pass,依据 profile 指定的基本块执行路径克隆 CFG 中的基本块序列,从而支持后续的 layout 优化和 section 分离。