mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-28 19:31:58 +00:00
Debug Info Finder: add processScope to actually handle the Scope.
Instead of just adding the scope to the list, we actually handle the scope. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186867 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0dcba2fadb
commit
fdd16bb918
@ -756,6 +756,8 @@ namespace llvm {
|
||||
/// processLocation - Process DILocation.
|
||||
void processLocation(DILocation Loc);
|
||||
|
||||
void processScope(DIScope Scope);
|
||||
|
||||
/// addCompileUnit - Add compile unit into CUs.
|
||||
bool addCompileUnit(DICompileUnit CU);
|
||||
|
||||
|
@ -857,7 +857,7 @@ void DebugInfoFinder::processModule(const Module &M) {
|
||||
for (unsigned i = 0, e = GVs.getNumElements(); i != e; ++i) {
|
||||
DIGlobalVariable DIG(GVs.getElement(i));
|
||||
if (addGlobalVariable(DIG)) {
|
||||
addScope(DIG.getContext());
|
||||
processScope(DIG.getContext());
|
||||
processType(DIG.getType());
|
||||
}
|
||||
}
|
||||
@ -897,7 +897,7 @@ void DebugInfoFinder::processLocation(DILocation Loc) {
|
||||
void DebugInfoFinder::processType(DIType DT) {
|
||||
if (!addType(DT))
|
||||
return;
|
||||
addScope(DT.getContext());
|
||||
processScope(DT.getContext());
|
||||
if (DT.isCompositeType()) {
|
||||
DICompositeType DCT(DT);
|
||||
processType(DCT.getTypeDerivedFrom());
|
||||
@ -915,6 +915,26 @@ void DebugInfoFinder::processType(DIType DT) {
|
||||
}
|
||||
}
|
||||
|
||||
void DebugInfoFinder::processScope(DIScope Scope) {
|
||||
if (Scope.isType()) {
|
||||
DIType Ty(Scope);
|
||||
processType(Ty);
|
||||
return;
|
||||
}
|
||||
if (!addScope(Scope))
|
||||
return;
|
||||
if (Scope.isLexicalBlock()) {
|
||||
DILexicalBlock LB(Scope);
|
||||
processScope(LB.getContext());
|
||||
} else if (Scope.isLexicalBlockFile()) {
|
||||
DILexicalBlockFile LBF = DILexicalBlockFile(Scope);
|
||||
processScope(LBF.getScope());
|
||||
} else if (Scope.isNameSpace()) {
|
||||
DINameSpace NS(Scope);
|
||||
processScope(NS.getContext());
|
||||
}
|
||||
}
|
||||
|
||||
/// processLexicalBlock
|
||||
void DebugInfoFinder::processLexicalBlock(DILexicalBlock LB) {
|
||||
DIScope Context = LB.getContext();
|
||||
@ -932,7 +952,7 @@ void DebugInfoFinder::processLexicalBlock(DILexicalBlock LB) {
|
||||
void DebugInfoFinder::processSubprogram(DISubprogram SP) {
|
||||
if (!addSubprogram(SP))
|
||||
return;
|
||||
addScope(SP.getContext());
|
||||
processScope(SP.getContext());
|
||||
processType(SP.getType());
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user