SSA(静态单赋值)

Static Single Assignment(SSA)是一种特殊的三地址代码,其所有变量在代码中只被赋值一次

基本构造思路:

  • 为每个变量维护一个计数器

  • 从函数入口开始遍历函数体

  • 遇到变量赋值时,为其生成新名字,并替换

SSA对分支的处理

在分支汇合处插入φ语句,对于同一个变量x在不同路径中被赋值的情况,使用xi=φ(xj, xk, ...)来合并不同的赋值。

SSA对循环的处理

循环被翻译成分支与跳转语句的组合,直接按照相应语句的方式处理。

SSA的作用

  • 每个变量只被赋值一次,相当于都变成const变量

  • 简化了数据流分析和某些优化

  • 使得定义-使用链(def-use chain)易于计算,定义-使用链关联每个变量的定义(赋值)及其相应的使用,包含许多分析和优化所需的关键信息,SSA形式中,定义-使用关系非常清晰,且可以线性复杂度进行计算

Last updated