DebugInfo: Simplify retrieving filename/directory name for line table entry building.

llvm-svn: 208911
This commit is contained in:
David Blaikie 2014-05-15 20:18:50 +00:00
parent f0915aa0e6
commit 4c6d987b06
1 changed files with 6 additions and 26 deletions

View File

@ -1611,32 +1611,12 @@ void DwarfDebug::recordSourceLine(unsigned Line, unsigned Col, const MDNode *S,
StringRef Dir; StringRef Dir;
unsigned Src = 1; unsigned Src = 1;
unsigned Discriminator = 0; unsigned Discriminator = 0;
if (S) { if (DIScope Scope = DIScope(S)) {
DIDescriptor Scope(S); assert(Scope.isScope());
Fn = Scope.getFilename();
if (Scope.isCompileUnit()) { Dir = Scope.getDirectory();
DICompileUnit CU(S); if (Scope.isLexicalBlock())
Fn = CU.getFilename(); Discriminator = DILexicalBlock(S).getDiscriminator();
Dir = CU.getDirectory();
} else if (Scope.isFile()) {
DIFile F(S);
Fn = F.getFilename();
Dir = F.getDirectory();
} else if (Scope.isSubprogram()) {
DISubprogram SP(S);
Fn = SP.getFilename();
Dir = SP.getDirectory();
} else if (Scope.isLexicalBlockFile()) {
DILexicalBlockFile DBF(S);
Fn = DBF.getFilename();
Dir = DBF.getDirectory();
} else if (Scope.isLexicalBlock()) {
DILexicalBlock DB(S);
Fn = DB.getFilename();
Dir = DB.getDirectory();
Discriminator = DB.getDiscriminator();
} else
llvm_unreachable("Unexpected scope info");
unsigned CUID = Asm->OutStreamer.getContext().getDwarfCompileUnitID(); unsigned CUID = Asm->OutStreamer.getContext().getDwarfCompileUnitID();
Src = static_cast<DwarfCompileUnit &>(*InfoHolder.getUnits()[CUID]) Src = static_cast<DwarfCompileUnit &>(*InfoHolder.getUnits()[CUID])