I need to extract the directory and filename during a llvm pass.
The current version of llvm moved getFilename
and getDirectory
from DebugLoc
to DebugInfoMetadata
. I can't find a class member getFilename
directly in the DebugLoc
header. Thus, how to do I go from an instruction to source code filename and directory?
http://llvm.org/docs/doxygen/html/classllvm_1_1DebugLoc.html
Additionally, there is a print function that might help but it only takes a llvm::raw_ostream
and can't be redirected to a std::string
.
void print (raw_ostream &OS) const
// prints source location /path/to/file.exe:line:col @[inlined at]
The code below is what gives the error
const DebugLoc &location = an_instruction_iter->getDebugLoc()
StringRef File = location->getFilename() // Gives an error
---solution I figured out a few minutes ago----
const DebugLoc &location = i_iter->getDebugLoc();
const DILocation *test =location.get();
test->getFilename();`