Add the subprogram DIEs to the context they're created with only
[oota-llvm.git] / lib / CodeGen / AsmPrinter / DwarfCompileUnit.cpp
index b6ea6a4166d91a5956ddef0838afbde9d64d1197..fb9e59958a10b37dbe6b77b649a98c2fc16e73ed 100644 (file)
@@ -1321,9 +1321,6 @@ DIE *CompileUnit::getOrCreateSubprogramDIE(DISubprogram SP) {
     DeclDie = getOrCreateSubprogramDIE(SPDecl);
   }
 
-  // Add to context owner.
-  ContextDIE->addChild(SPDie);
-
   // Add function template parameters.
   addTemplateParams(*SPDie, SP.getTemplateParams());
 
@@ -1333,9 +1330,15 @@ DIE *CompileUnit::getOrCreateSubprogramDIE(DISubprogram SP) {
     // Refer function declaration directly.
     addDIEEntry(SPDie, dwarf::DW_AT_specification, DeclDie);
 
+    // Add subprogram definitions to the CU die directly.
+    CUDie.get()->addChild(SPDie);
+
     return SPDie;
   }
 
+  // Add to context owner.
+  ContextDIE->addChild(SPDie);
+
   // Add the linkage name if we have one.
   StringRef LinkageName = SP.getLinkageName();
   if (!LinkageName.empty())