summaryrefslogtreecommitdiffstats
path: root/lib/CodeGen
diff options
context:
space:
mode:
authorEric Christopher <echristo@gmail.com>2013-02-06 21:53:56 +0000
committerEric Christopher <echristo@gmail.com>2013-02-06 21:53:56 +0000
commit01776a5a9480243f95fff50c96e3f35fad41e4cb (patch)
tree6acd0ec7c9b3ed17b00782c9c822f3b9e9ecf462 /lib/CodeGen
parent231b83d8fd3ce86fb5cd154d50dd3f920ca0d71f (diff)
downloadexternal_llvm-01776a5a9480243f95fff50c96e3f35fad41e4cb.zip
external_llvm-01776a5a9480243f95fff50c96e3f35fad41e4cb.tar.gz
external_llvm-01776a5a9480243f95fff50c96e3f35fad41e4cb.tar.bz2
Clean up multiple skeleton compile units if we have multiple compile
units coming in. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174548 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen')
-rw-r--r--lib/CodeGen/AsmPrinter/DwarfDebug.cpp10
-rw-r--r--lib/CodeGen/AsmPrinter/DwarfDebug.h4
2 files changed, 6 insertions, 8 deletions
diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
index 85d5af5..3b8bebe 100644
--- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -159,7 +159,6 @@ DwarfDebug::DwarfDebug(AsmPrinter *A, Module *M)
PrevLabel(NULL), GlobalCUIndexCount(0),
InfoHolder(A, &AbbreviationsSet, &Abbreviations, "info_string",
DIEValueAllocator),
- SkeletonCU(0),
SkeletonAbbrevSet(InitAbbreviationsSetSize),
SkeletonHolder(A, &SkeletonAbbrevSet, &SkeletonAbbrevs, "skel_string",
DIEValueAllocator) {
@@ -1040,11 +1039,12 @@ void DwarfDebug::endModule() {
E = CUMap.end(); I != E; ++I)
delete I->second;
- delete SkeletonCU;
+ for (SmallVector<CompileUnit *, 1>::iterator I = SkeletonCUs.begin(),
+ E = SkeletonCUs.end(); I != E; ++I)
+ delete *I;
// Reset these for the next Module if we have one.
FirstCU = NULL;
- SkeletonCU = NULL;
}
// Find abstract variable, if any, associated with Var.
@@ -2496,10 +2496,8 @@ CompileUnit *DwarfDebug::constructSkeletonCU(const MDNode *N) {
if (!CompilationDir.empty())
NewCU->addLocalString(Die, dwarf::DW_AT_comp_dir, CompilationDir);
- if (!SkeletonCU)
- SkeletonCU = NewCU;
-
SkeletonHolder.addUnit(NewCU);
+ SkeletonCUs.push_back(NewCU);
return NewCU;
}
diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.h b/lib/CodeGen/AsmPrinter/DwarfDebug.h
index df3dc11..fb90202 100644
--- a/lib/CodeGen/AsmPrinter/DwarfDebug.h
+++ b/lib/CodeGen/AsmPrinter/DwarfDebug.h
@@ -415,8 +415,8 @@ class DwarfDebug {
// original object file, rather than things that are meant
// to be in the .dwo sections.
- // The CU left in the original object file for separated debug info.
- CompileUnit *SkeletonCU;
+ // The CUs left in the original object file for separated debug info.
+ SmallVector<CompileUnit *, 1> SkeletonCUs;
// Used to uniquely define abbreviations for the skeleton emission.
FoldingSet<DIEAbbrev> SkeletonAbbrevSet;