summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
diff options
context:
space:
mode:
authorManman Ren <manman.ren@gmail.com>2013-09-09 19:23:58 +0000
committerManman Ren <manman.ren@gmail.com>2013-09-09 19:23:58 +0000
commit33796c5e98ede9afc108580d2e02df61ea7dffb2 (patch)
tree20cbebd09d83d40e402959b698f372c6537eefd6 /llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
parent67de33b0757a1c0588b2351e1a045d7dde134bf3 (diff)
downloadbcm5719-llvm-33796c5e98ede9afc108580d2e02df61ea7dffb2.tar.gz
bcm5719-llvm-33796c5e98ede9afc108580d2e02df61ea7dffb2.zip
Debug Info: move DIScope::getContext to DwarfDebug.
DIScope::getContext is a wrapper function that calls the specific getContext method on each subclass. When we switch DIType::getContext to return DIScopeRef instead of DIScope, DIScope::getContext can no longer return a DIScope without a type identifier map. DIScope::getContext is only used by DwarfDebug, so we move it to DwarfDebug to have easy access to the type identifier map. llvm-svn: 190330
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
index bdcb813e227..1cfadc91e03 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -2650,3 +2650,26 @@ void DwarfDebug::emitDebugStrDWO() {
DIScope DwarfDebug::resolve(DIScopeRef SRef) const {
return SRef.resolve(TypeIdentifierMap);
}
+
+// If the current node has a parent scope then return that,
+// else return an empty scope.
+DIScope DwarfDebug::getScopeContext(DIScope S) const {
+
+ if (S.isType())
+ return DIType(S).getContext();
+
+ if (S.isSubprogram())
+ return DISubprogram(S).getContext();
+
+ if (S.isLexicalBlock())
+ return DILexicalBlock(S).getContext();
+
+ if (S.isLexicalBlockFile())
+ return DILexicalBlockFile(S).getContext();
+
+ if (S.isNameSpace())
+ return DINameSpace(S).getContext();
+
+ assert((S.isFile() || S.isCompileUnit()) && "Unhandled type of scope.");
+ return DIScope();
+}
OpenPOWER on IntegriCloud