例如,下面的代码
%div = sdiv i32 %add, %36
%38 = trunc i64 %indvars.iv.next18 to i32
%mul11 = mul nsw i32 %div, %38
第一条和第三条指令可能是数据依赖,因为第一条指令计算%div
,第三条需要%div
。
类似地,%38
在第二条指令计算,第三条指令需要它
是否有任何工具或llvmopt
命令可以获得有关数据依赖性的信息?
我试过opt -enable-new-pm=0 -da -stats source_ir.ll
,但什么都打印不出来。
也许您想要的是LLVM的数据依赖关系图。文档中提到的"程序依赖关系图"似乎从未实现过——这很遗憾,它本可以提供更好的信息。他们两人都是AFAIK在这次谈话中首次提到的。
有关用法示例,请检查此LLVM测试。