我正在写一个LLVM传递,它会在openCL内核中提供已声明变量的数量。为此,我需要启用调试信息并访问@llvm.dbg.declare
信息。
我遍历函数的所有指令,并使用isa<CallInst>
模板来识别调用指令。
现在有两种情况,我可以有
call void @llvm.dbg.declare(metadata float addrspace(1)** %4, metadata !20, metadata !DIExpression()), !dbg !21
或
%6 = call i32 @get_global_id(i32 0), !dbg !25
如何检查CallInst
是否有与之关联的元数据,即内部有@llvm.dbg.declare
,然后如何提取变量声明的名称(我怀疑是通过{{} 1}}方法?