[llvm] r192938 - Temporarily revert r192749 as it is causing problems for LTO and
Eric Christopher
echristo at gmail.com
Thu Oct 17 18:57:30 PDT 2013
Author: echristo
Date: Thu Oct 17 20:57:30 2013
New Revision: 192938
URL: http://llvm.org/viewvc/llvm-project?rev=192938&view=rev
Log:
Temporarily revert r192749 as it is causing problems for LTO and
requires a more in depth change to the IR structure.
Modified:
llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=192938&r1=192937&r2=192938&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Thu Oct 17 20:57:30 2013
@@ -827,7 +827,14 @@ CompileUnit *DwarfDebug::constructCompil
// 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(
return;
DIE *SubprogramDie = TheCU->getOrCreateSubprogramDIE(SP);
- SPMap[N] = TheCU;
// Expose as a global name.
TheCU->addGlobalName(SP.getName(), SubprogramDie, resolve(SP.getContext()));
More information about the llvm-commits
mailing list