例如下面的代码
%div = sdiv i32 %add, %36
%38 = trunc i64 %indvars.iv.next18 to i32
%mul11 = mul nsw i32 %div, %38
第一条和第三条指令可能是数据依赖,因为第一条指令计算
%div
而第三条指令需要%div
.
类似地,
%38
在第二条指令中计算,第三条指令需要它。
有没有什么工具或者llvm
opt
命令可以得到数据依赖的信息?
我试过
opt -enable-new-pm=0 -da -stats source_ir.ll
但什么也打印不出来。
也许您正在寻找的是 LLVM 的Data Dependency Graph。文档中还提到的“程序依赖关系图”似乎从未实现过——真可惜,它本可以提供更好的信息。在 this talk.
中首先提到了他们两个 AFAIK检查这个 LLVM 测试 以获取使用示例。