最佳答案
LLVM 有 Phi指令,解释很奇怪:
“ phi”指令用于实现 SSA 图中表示函数的 φ 节点。
通常用于实现分支。如果我理解正确的话,那么需要使依赖性分析成为可能,并且在某些情况下,它可以帮助避免不必要的加载。然而,仍然很难理解它到底是做什么的。
万花筒 例子解释它相当不错的 if
情况下。然而,如何实现像 &&
和 ||
这样的逻辑操作还不是很清楚。如果我在 在线 LLVM编译器中键入以下内容:
void main1(bool r, bool y) {
bool l = y || r;
}
最后几行完全把我弄糊涂了:
; <label>:10 ; preds = %7, %0
%11 = phi i1 [ true, %0 ], [ %9, %7 ]
%12 = zext i1 %11 to i8
看起来 phi 节点生成了一个可以使用的结果。我记得 phi node 只定义路径值的来源。
谁能解释一下什么是 Phi 节点,以及如何用它实现 ||
?