如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的调试信息中获取确切的字符数据?
谢谢。