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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190330 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
index bdcb813..1cfadc9 100644
--- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -2650,3 +2650,26 @@
 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();
+}