如http://llvm.org/docs/SourceLevelDebugging.html中所述,
我可以使用以下代码从 LLVM IR 中找到源代码的行号和列号。
if (MDNode *N = I->getMetadata("dbg")) { // Here I is an LLVM instruction
DILocation Loc(N); // DILocation is in DebugInfo.h
unsigned Line = Loc.getLineNumber();
StringRef File = Loc.getFilename();
StringRef Dir = Loc.getDirectory();
}
但是,我想要更准确的信息。
在 AST 级别,clang 提供了FullSourceLoc API ( getCharaterData()
) 以便我可以找到 AST 节点和原始源代码之间的映射。我想找到 LLVM IR 和源代码之间的这种映射。
我可以从 IR 的调试信息中获取准确的字符数据吗?
谢谢。