跳转到内容

编译器优化

局部优化(常量折叠、公共子表达式消除)、循环优化(不变量外提、展开、向量化)、过程间优化(内联)。本章解释优化的正确性约束(不能改变可观察行为)、未定义行为在其中的角色,以及为什么 -O3 有时更慢。

  • 未定义行为是编译器优化的许可证,也是 C 程序 bug 的温床
  • 内联是其他优化的使能者
  • 别名分析限制了很多优化