全局值编号(GVN):编译器中的一种优化分析/转换技术,用于在整个控制流图范围内识别“计算结果等价”的表达式(同值表达式),从而进行公共子表达式消除(CSE)、冗余计算删除与一定程度的常量传播/简化。常见于中间表示(IR,如 SSA)层面的优化流程中。
/ˈɡloʊbəl vælˈjuː ˈnʌmbərɪŋ/
The compiler used global value numbering to remove redundant calculations.
编译器使用全局值编号来删除重复的计算。
By applying global value numbering across the control-flow graph, the optimizer can prove that two expressions compute the same value even when they occur in different basic blocks.
通过在控制流图范围内应用全局值编号,优化器可以证明两个表达式即使出现在不同的基本块中也会计算出相同的值。
该术语由三部分构成:global(全局的)指分析范围跨越多个基本块与分支路径;value(值)强调关注“计算结果”而不只是语法形式;numbering(编号)源于早期编译优化做法:为“等价的值”分配同一个编号(value number),用编号来判断两个表达式是否可视为同一结果。与仅在单个基本块内进行的 local value numbering 相对,GVN将等价关系扩展到更大的程序范围。