C++ 获取C/C++;来自LLVM IR的源代码数据
如中所述,C++ 获取C/C++;来自LLVM IR的源代码数据,c++,c,llvm,C++,C,Llvm,如中所述, 我可以使用下面的代码段从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 = Lo
我可以使用下面的代码段从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提供(
getCharaterData()
)以便我可以找到AST节点和原始源代码之间的映射。我想找到LLVM IR和源代码之间的这种映射。我能从IR的调试信息中得到准确的字符数据吗
谢谢。仅从IR调试信息中获取准确的字符数据是不可能的。最好是手动将源代码保存在某个位置,然后使用从调试信息中获得的行和列信息 顺便说一下,有一种更简单的方法可以获取
指令
s的调试信息:返回一个DebugLoc
实例,然后可以使用getLine()
和getCol()
查询该实例(但首先确保使用其isUnknown
方法进行检查)