Debug Info: In DIBuilder, the context field of a global variable is updated to

use DIScopeRef.

A paired commit at clang will follow to show cases where we will use an
identifer for the context of a global variable.

rdar://18958417


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222195 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Manman Ren
2014-11-18 00:29:08 +00:00
parent 66a2b0564e
commit b05098b884
5 changed files with 161 additions and 7 deletions

View File

@@ -567,8 +567,8 @@ bool DIGlobalVariable::Verify() const {
if (getDisplayName().empty())
return false;
// Make sure context @ field 1 is an MDNode.
if (!fieldIsMDNode(DbgNode, 1))
// Make sure context @ field 1 is a ScopeRef.
if (!fieldIsScopeRef(DbgNode, 1))
return false;
// Make sure that type @ field 3 is a DITypeRef.
if (!fieldIsTypeRef(DbgNode, 3))
@@ -1005,7 +1005,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)) {
processScope(DIG.getContext());
processScope(DIG.getContext().resolve(TypeIdentifierMap));
processType(DIG.getType().resolve(TypeIdentifierMap));
}
}