gpt4 book ai didi

LLVM:指令或值类中 "uses"和 "user"之间的区别

转载 作者:行者123 更新时间:2023-12-03 23:29:32 26 4
gpt4 key购买 nike

我是 LLVM 的新手,已经检查过 ValueInstruction类。我看到这两个类都有方法 usesuser .它们之间有什么区别?另外,关于 this post ,我可以使用这些方法来确定指令是否产生值吗?

tnx。

最佳答案

由于Instruction源自 Value它继承了这两个函数usersuses .不同之处在于 Value 的用户有Value作为其操作数之一。

当您调用 uses 时你会得到一个列表Use持有来自 Value 的引用的实例给特定 Value 的每个用户.调用users为您提供 User 的列表直接地。以下代码展示了如何使用 usersuses .

for(auto U : V->users()){  // U is of type User*
if (auto I = dyn_cast<Instruction>(U)){
// an instruction uses V
}
}

你可以看到 users作为快捷方式,因为您可以对使用执行相同操作:
for(auto U : V->uses()){  // U is of type Use*
if (auto I = dyn_cast<Instruction>(U.getUser())){
// an instruction uses V
}
}

通常使用 users 就足够了获取 Value 的所有依赖项.
Value 使用的所有值是操作数。这个依赖方向不是 Value 的一部分。的使用 list 。

关于产生值的指令的第二个问题:不能保证没有使用会导致不产生值。死指令可以产生一个值并且没有用户。此外,元数据可以使用不产生值的指令。

关于LLVM:指令或值类中 "uses"和 "user"之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35370195/

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