首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHI指令到底做了什么以及如何在LLVM中使用它

PHI指令到底做了什么以及如何在LLVM中使用它
EN

Stack Overflow用户
提问于 2012-07-15 00:42:29
回答 3查看 36.8K关注 0票数 98

LLVM有phi指令,但解释很奇怪:

'phi‘指令用于在表示函数的SSA图中实现φ节点。

通常,它用于实现分支。如果我理解正确的话,它需要使依赖分析成为可能,在某些情况下,它可以帮助避免不必要的加载。然而,仍然很难理解它到底是做什么的。

对于if案例,万花筒example很好地解释了这一点。然而,如何实现像&&||这样的逻辑操作还不是很清楚。如果我在online llvm编译器中输入以下内容:

代码语言:javascript
复制
void main1(bool r, bool y) {
    bool l = y || r;
}

最后几行完全把我搞糊涂了:

代码语言:javascript
复制
; <label>:10                                      ; preds = %7, %0
%11 = phi i1 [ true, %0 ], [ %9, %7 ]
%12 = zext i1 %11 to i8

看起来phi节点生成了一个可以使用的结果。我的印象是,phi节点只定义了来自哪些路径的值。

有人能解释一下什么是Phi节点,以及如何用它实现||吗?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11485531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档