gpt4 book ai didi

c++ - 如何从 LLVM 中的 phinode 及其相应的 basicblocks 获取标签?

转载 作者:行者123 更新时间:2023-11-27 22:35:20 24 4
gpt4 key购买 nike

假设 IR 代码如下所示:

define void @_Z1mbb(i1 zeroext %r, i1 zeroext %y) nounwind {
entry:
%r.addr = alloca i8, align 1
%y.addr = alloca i8, align 1
%l = alloca i8, align 1
%frombool = zext i1 %r to i8
store i8 %frombool, i8* %r.addr, align 1
%frombool1 = zext i1 %y to i8
store i8 %frombool1, i8* %y.addr, align 1
%0 = load i8* %y.addr, align 1
%tobool = trunc i8 %0 to i1
br i1 %tobool, label %lor.end, label %lor.rhs

lor.rhs: ; preds = %entry
%1 = load i8* %r.addr, align 1
%tobool2 = trunc i8 %1 to i1
br label %lor.end

lor.end: ; preds = %lor.rhs, %entry
%2 = phi i1 [ true, %entry ], [ %tobool2, %lor.rhs ]
%frombool3 = zext i1 %2 to i8
store i8 %frombool3, i8* %l, align 1
ret void
}

phinode 有 2 对 [ true, %entry ], [ %tobool2, %lor.rhs ]。如何提取 %entry%lor.rhs 并找到每对的相应基本 block ?任何帮助将不胜感激。

最佳答案

PHI->getgetNumIncomingValues() : 返回 PHINode 中传入值的数量

对于您的 phi 节点:

 %2 = phi i1 [ true, %entry ], [ %tobool2, %lor.rhs ]

PHI->getIncomingValue(0) :给出 true

PHI->getIncomingBlock(0) :给出 %entry

还有 block 和值的迭代器。

http://llvm.org/doxygen/classllvm_1_1PHINode.html

始终引用 doxygen 文档以查看与类相关的所有 API(例如:PHINode)。

关于c++ - 如何从 LLVM 中的 phinode 及其相应的 basicblocks 获取标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55134506/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com