我正在尝试获取指令的行信息。 我有
const CallInst* callInst = dyn_cast<const CallInst>(&*I);
MDNode *N = callInst->getMetadata("dbg");
N显然是NULL,但是我用“clang -g -S -emit-llvm”编译了输入IR 有谁知道为什么会这样?
答案 0 :(得分:0)
可能您的指令与源程序的任何语句都不对应,因此没有调试元数据。
例如,它是由一个或另一个优化生成的,因为传递-emit-llvm
不仅会发出llvm,而且会首先对您的程序应用优化包。
排除优化影响并在前端执行clang -g -S -emit-llvm -mllvm -disable-llvm-optzns
后查看纯代码,并确保您的指令具有所需的元数据。