在LLVM IR中查找GlobalValue的DILocation?

时间:2015-04-17 19:37:43

标签: llvm llvm-ir llvm-c++-api

我有一个GlobalValue我想找到DILocation。我可以看到元数据存在,但无法找到明显的查找路径来获取它。为llvm :: Instruction做同样的事情很容易,但这并不明显。

1 个答案:

答案 0 :(得分:1)

最简单的方法是创建一个DIGlobalVariable(或获取DIGlobalVariable)并询问它的文件,行,列等。您可以通过遍历编译单元中的全局变量来找到全局变量。

不同之处在于:指令有一个位置,因为我们要从中构建一个折线表,它可以移动,所以我们最终会访问它,复制它等等。我们做代码生成。全局变量不需要指向其调试信息,因为我们使用信息的唯一时间是我们创建调试信息并且元数据指向变量本身。