标签: compiler-construction ssa
代码的静态单一赋值(SSA)表示几乎但不完全规范;有两种风格,vanilla和 edge-split ,其中根据需要插入额外的节点,使每个循环只有一个后边缘。基本原理:添加边缘分割约束可以使某些优化更容易。
我真正想知道的是边缘分割约束是否总体上有价值,但这是一个判断调用,所以对于一个具体的事实问题:
以下使用SSA的着名编译器是否使用边缘分割约束?
答案 0 :(得分:1)
到目前为止的调查:
这表明LLVM使用边缘分割:http://llvm.org/doxygen/LoopSimplify_8cpp.html#a209bb6a782608a71aa8ec5075970caa3
同样去: https://golang.org/src/cmd/compile/internal/ssa/critical.go