[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