mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-05 12:31:33 +00:00
Gracefully handle various scopes while recording source line info.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83317 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c6f69e94fa
commit
f84548db63
@ -1958,16 +1958,33 @@ unsigned DwarfDebug::RecordSourceLine(Value *V, unsigned Line, unsigned Col) {
|
||||
/// label. Returns a unique label ID used to generate a label and provide
|
||||
/// correspondence to the source line list.
|
||||
unsigned DwarfDebug::RecordSourceLine(unsigned Line, unsigned Col,
|
||||
MDNode *Scope) {
|
||||
MDNode *S) {
|
||||
if (!MMI)
|
||||
return 0;
|
||||
|
||||
if (TimePassesIsEnabled)
|
||||
DebugTimer->startTimer();
|
||||
|
||||
DICompileUnit CU(Scope);
|
||||
unsigned Src = GetOrCreateSourceID(CU.getDirectory(),
|
||||
CU.getFilename());
|
||||
const char *Dir = NULL;
|
||||
const char *Fn = NULL;
|
||||
|
||||
DIDescriptor Scope(S);
|
||||
if (Scope.isCompileUnit()) {
|
||||
DICompileUnit CU(S);
|
||||
Dir = CU.getDirectory();
|
||||
Fn = CU.getFilename();
|
||||
} else if (Scope.isSubprogram()) {
|
||||
DISubprogram SP(S);
|
||||
Dir = SP.getDirectory();
|
||||
Fn = SP.getFilename();
|
||||
} else if (Scope.isLexicalBlock()) {
|
||||
DILexicalBlock DB(S);
|
||||
Dir = DB.getDirectory();
|
||||
Fn = DB.getFilename();
|
||||
} else
|
||||
assert (0 && "Unexpected scope info");
|
||||
|
||||
unsigned Src = GetOrCreateSourceID(Dir, Fn);
|
||||
unsigned ID = MMI->NextLabelID();
|
||||
Lines.push_back(SrcLineInfo(Line, Col, Src, ID));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user