From ffbc4decc2053d7efa0e108850a683a4c4cc7c7e Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Fri, 18 Oct 2013 01:57:30 +0000 Subject: [PATCH] Temporarily revert r192749 as it is causing problems for LTO and requires a more in depth change to the IR structure. llvm-svn: 192938 --- llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 2e5205205d02..755f27867ec2 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -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())); -- GitLab