存在从指令操作数转出( breaks a constant GEP expression )到其自己的指令中的传递,使得这种嵌套的GEP表达式变得显式,从而在随后的传递中更容易使用。
现在我也遇到了类似的问题。此SSA指令(link):
while.cond: ; preds = %while.body, %entry
%n.0 = phi %struct.Node* [ bitcast ({ %struct.Node*, i32, [4 x i8] }* @n1 to %struct.Node*), %entry ], [ %13, %while.body ]
...包含一个位转换指令(link)作为它的“内联”操作数。是否存在允许我将给定模块的SSA分解为最基本的指令的pass,本质上是“取消内联”这样的嵌套表达式,使它们成为显式的SSA指令?
发布于 2014-03-10 13:49:12
我不知道有这样的通行证。
然而,在我看来,修改SAFECode的BreakConstantGEPs传递来实现这一点应该非常简单:只需将最初插入到工作列表中的条件更改为isa<PHINode>,而不是操作数循环检查hasConstantGEP。
https://stackoverflow.com/questions/22292338
复制相似问题