从 LLVM 获取 "minimal" SSA

Getting "minimal" SSA from LLVM

LLVM 的 opt -S -mem2reg 传递生成所谓的 "pruned" SSA —— 删除了所有死的 phi 函数的形式。我想在 IR 中保留那些 phi 指令,获取 "minimal" SSA,但我没能找到一种简单的方法来做到这一点。

我注定要从头开始实施整个 SSA 构建算法,还是有办法使用现有工具来实现?

除了修剪后的 SSA 形式之外,LLVM 不支持形成任何形式,并且不太可能发展这种机制。在进行 phi 放置时,我们甚至不做综合这些信息的工作。