Temporarily revert r192749 as it is causing problems for LTO and

requires a more in depth change to the IR structure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192938 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eric Christopher 2013-10-18 01:57:30 +00:00
parent 0d87c201b1
commit 1c165b8ee3

View File

@ -827,7 +827,14 @@ CompileUnit *DwarfDebug::constructCompileUnit(const MDNode *N) {
// Construct subprogram DIE.
void DwarfDebug::constructSubprogramDIE(CompileUnit *TheCU, const MDNode *N) {
assert(!SPMap[N] && "Trying to create a subprogram DIE twice!");
// FIXME: We should only call this routine once, however, during LTO if a
// program is defined in multiple CUs we could end up calling it out of
// beginModule as we walk the CUs.
CompileUnit *&CURef = SPMap[N];
if (CURef)
return;
CURef = TheCU;
DISubprogram SP(N);
if (!SP.isDefinition())
@ -836,7 +843,6 @@ void DwarfDebug::constructSubprogramDIE(CompileUnit *TheCU, const MDNode *N) {
return;
DIE *SubprogramDie = TheCU->getOrCreateSubprogramDIE(SP);
SPMap[N] = TheCU;
// Expose as a global name.
TheCU->addGlobalName(SP.getName(), SubprogramDie, resolve(SP.getContext()));