gpt4 book ai didi

c++ - 获取 llvm 指令的 use 和 def

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:37:45 24 4
gpt4 key购买 nike

我正在尝试进行 active 分析,为此我需要为我的所有节点获取 defuse 集,它们在其中定义如下:

def[n] = 在节点 n 处定义的所有变量的集合

use[n] = 在节点 n 处使用的所有变量的集合

例如在行中:

a = b + c

def[n] = {a}

use[n] = {b,c}

我该怎么做?

最佳答案

http://llvm.org/docs/ProgrammersManual.html#iterating-over-def-use-use-def-chains

希望这篇文章能帮到你。访问Value对象中的user_begin()、user_end()、users()方法的用户对象就是使用Value对象的对象。 Instruction 类是 User 类的子类。

我可能是错的,但是要在 IR 级别获取 def-use 集合,集合的元素应该是 Value 对象,并且每个节点应该是一个 Instruction 对象。
因此,每个节点的def set就是指令返回的Value对象(有可能指令不返回,这种情况下def set为空集), use 集将是通过指令的 user_iterator 访问的 User 对象

关于c++ - 获取 llvm 指令的 use 和 def,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48172816/

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