Value numbering
a day ago
- SSA为每个表达式分配唯一名称,使得文本相似但不同的计算之间能够更清晰地区分。
- 值编号识别始终产生相同值的指令,从而实现重用(例如,通过哈希指令)。
- 局部值编号(LVN)在线性块序列上工作,使用哈希映射来查找和替换重复的纯操作。
- 全局值编号(GVN)跨块扩展,利用支配者关系共享值映射以实现表达式去重。
- 不纯操作(如字段加载)需要额外的簿记,例如加载-存储转发或类型信息跟踪。
- 高级技术包括统一哈希表、值分区、作用域哈希映射以及处理循环中的phi函数。