首页 > 解决方案 > 我的 SSA 结构正确吗?(重命名)

问题描述

我一直在学习 ssa(静态单一赋值形式),我得到了下面插入了 phi 函数的图表,但该图表尚未重命名:

给定的 ssa 图

我不得不重命名变量,这就是我得到的:

我转换的 ssa 图

我很不确定这是否正确。我是否正确重命名了变量?这是最小的ssa吗?我正在使用这里的算法 Cytron 等人的论文)来重命名变量。请帮忙!:)

标签: graphcompiler-constructioncompiler-optimizationcontrol-flow-graphssa

解决方案


不,您的图表不正确。phi 函数和重命名xy是正确的,问题是临时变量t1通过t3. 这些变量在L1进入块时是死的,根本不需要任何 phi 函数。如果您坚持对这些变量使用 phi 函数,则必须假设变量存在并且在输入图形时具有不确定的值。让t1_0,t2_0t3_0成为这些值并相应地更新重命名的图形。


推荐阅读