Reimplement r194843 in a slightly less broken way.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194848 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Adrian Prantl 2013-11-15 21:05:09 +00:00
parent c160efc28b
commit 0cbdb81de7

View File

@ -871,9 +871,7 @@ DIE *CompileUnit::getOrCreateContextDIE(DIScope Context) {
return getOrCreateNameSpace(DINameSpace(Context)); return getOrCreateNameSpace(DINameSpace(Context));
if (Context.isSubprogram()) if (Context.isSubprogram())
return getOrCreateSubprogramDIE(DISubprogram(Context)); return getOrCreateSubprogramDIE(DISubprogram(Context));
if (DIE *ContextDIE = getDIE(Context)) return getDIE(Context);
return ContextDIE;
return getCUDie();
} }
/// getOrCreateTypeDIE - Find existing DIE or create new DIE for the /// getOrCreateTypeDIE - Find existing DIE or create new DIE for the
@ -888,6 +886,10 @@ DIE *CompileUnit::getOrCreateTypeDIE(const MDNode *TyNode) {
// Construct the context before querying for the existence of the DIE in case // Construct the context before querying for the existence of the DIE in case
// such construction creates the DIE. // such construction creates the DIE.
DIE *ContextDIE = getOrCreateContextDIE(resolve(Ty.getContext())); DIE *ContextDIE = getOrCreateContextDIE(resolve(Ty.getContext()));
// TODO: Investigate if this beavior is intentional and possibly
// replace it with an assert.
if (!ContextDIE)
ContextDIE = getCUDie();
DIE *TyDIE = getDIE(Ty); DIE *TyDIE = getDIE(Ty);
if (TyDIE) if (TyDIE)