简化LLVM SSA中的表达式

时间:2014-03-10 04:54:55

标签: llvm llvm-ir

指令的操作数中有breaks a constant GEP expression传递给它自己的指令,因此这些嵌套的GEP表达式变得明确,因此在后续传递中更容易使用。

现在我遇到了类似的问题。这个SSA Phi指令(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 ]
  ...

包含一个bitcast指令(link)作为其“内联”操作数。存在一个传递,允许我将给定模块的SSA分解为最基本的指令,基本上“取消内联”这样的嵌套表达式,使它们成为明确的SSA指令?

1 个答案:

答案 0 :(得分:1)

我不知道有任何这样的通行证。

但是,在我看来,修改SAFECode的BreakConstantGEPs传递来做到这一点应该非常简单:只需将最初插入工作列表的条件更改为isa<PHINode>而不是操作数循环检查hasConstantGEP

相关问题