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 のデバッグ情報から正確な文字データを取得することはできますか?
ありがとう。