Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 获取C/C++;来自LLVM IR的源代码数据_C++_C_Llvm - Fatal编程技术网

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
方法进行检查)