Skip to content

Commit

Permalink
Revert "Store TypeUnits in a SmallVector<DWARFUnitSection> instead of…
Browse files Browse the repository at this point in the history
… a single DWARFUnitSection."

This reverts commit r218513.

Buildbots using libstdc++ issue an error when trying to copy
SmallVector<std::unique_ptr<>>. Revert the commit until we have a fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218514 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
fredriss committed Sep 26, 2014
1 parent 5fb5bdb commit a0d5d7a
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 23 deletions.
26 changes: 10 additions & 16 deletions lib/DebugInfo/DWARFContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -86,17 +86,15 @@ void DWARFContext::dump(raw_ostream &OS, DIDumpType DumpType) {

if ((DumpType == DIDT_All || DumpType == DIDT_Types) && getNumTypeUnits()) {
OS << "\n.debug_types contents:\n";
for (const auto &TUS : type_unit_sections())
for (const auto &TU : TUS)
TU->dump(OS);
for (const auto &TU : type_units())
TU->dump(OS);
}

if ((DumpType == DIDT_All || DumpType == DIDT_TypesDwo) &&
getNumDWOTypeUnits()) {
OS << "\n.debug_types.dwo contents:\n";
for (const auto &DWOTUS : dwo_type_unit_sections())
for (const auto &DWOTU : DWOTUS)
DWOTU->dump(OS);
for (const auto &DWOTU : dwo_type_units())
DWOTU->dump(OS);
}

if (DumpType == DIDT_All || DumpType == DIDT_Loc) {
Expand Down Expand Up @@ -339,17 +337,15 @@ void DWARFContext::parseTypeUnits() {
uint32_t offset = 0;
const DataExtractor &DIData =
DataExtractor(I.second.Data, isLittleEndian(), 0);
TUs.push_back(DWARFUnitSection<DWARFTypeUnit>());
auto &TUS = TUs.back();
while (DIData.isValidOffset(offset)) {
std::unique_ptr<DWARFTypeUnit> TU(new DWARFTypeUnit(*this,
getDebugAbbrev(), I.second.Data, getRangeSection(),
getStringSection(), StringRef(), getAddrSection(),
&I.second.Relocs, isLittleEndian(), TUS));
&I.second.Relocs, isLittleEndian(), TUs));
if (!TU->extract(DIData, &offset))
break;
TUS.push_back(std::move(TU));
offset = TUS.back()->getNextUnitOffset();
TUs.push_back(std::move(TU));
offset = TUs.back()->getNextUnitOffset();
}
}
}
Expand Down Expand Up @@ -380,17 +376,15 @@ void DWARFContext::parseDWOTypeUnits() {
uint32_t offset = 0;
const DataExtractor &DIData =
DataExtractor(I.second.Data, isLittleEndian(), 0);
DWOTUs.push_back(DWARFUnitSection<DWARFTypeUnit>());
auto &TUS = DWOTUs.back();
while (DIData.isValidOffset(offset)) {
std::unique_ptr<DWARFTypeUnit> TU(new DWARFTypeUnit(*this,
getDebugAbbrevDWO(), I.second.Data, getRangeDWOSection(),
getStringDWOSection(), getStringOffsetDWOSection(), getAddrSection(),
&I.second.Relocs, isLittleEndian(), TUS));
&I.second.Relocs, isLittleEndian(), DWOTUs));
if (!TU->extract(DIData, &offset))
break;
TUS.push_back(std::move(TU));
offset = TUS.back()->getNextUnitOffset();
DWOTUs.push_back(std::move(TU));
offset = DWOTUs.back()->getNextUnitOffset();
}
}
}
Expand Down
13 changes: 6 additions & 7 deletions lib/DebugInfo/DWARFContext.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,15 @@ namespace llvm {
class DWARFContext : public DIContext {

DWARFUnitSection<DWARFCompileUnit> CUs;
SmallVector<DWARFUnitSection<DWARFTypeUnit>,1> TUs;
DWARFUnitSection<DWARFTypeUnit> TUs;
std::unique_ptr<DWARFDebugAbbrev> Abbrev;
std::unique_ptr<DWARFDebugLoc> Loc;
std::unique_ptr<DWARFDebugAranges> Aranges;
std::unique_ptr<DWARFDebugLine> Line;
std::unique_ptr<DWARFDebugFrame> DebugFrame;

DWARFUnitSection<DWARFCompileUnit> DWOCUs;
SmallVector<DWARFUnitSection<DWARFTypeUnit>,1> DWOTUs;
DWARFUnitSection<DWARFTypeUnit> DWOTUs;
std::unique_ptr<DWARFDebugAbbrev> AbbrevDWO;
std::unique_ptr<DWARFDebugLocDWO> LocDWO;

Expand Down Expand Up @@ -77,7 +77,6 @@ class DWARFContext : public DIContext {

typedef DWARFUnitSection<DWARFCompileUnit>::iterator_range cu_iterator_range;
typedef DWARFUnitSection<DWARFTypeUnit>::iterator_range tu_iterator_range;
typedef iterator_range<SmallVectorImpl<DWARFUnitSection<DWARFTypeUnit>>::iterator> tu_section_iterator_range;

/// Get compile units in this context.
cu_iterator_range compile_units() {
Expand All @@ -86,9 +85,9 @@ class DWARFContext : public DIContext {
}

/// Get type units in this context.
tu_section_iterator_range type_unit_sections() {
tu_iterator_range type_units() {
parseTypeUnits();
return tu_section_iterator_range(TUs.begin(), TUs.end());
return tu_iterator_range(TUs.begin(), TUs.end());
}

/// Get compile units in the DWO context.
Expand All @@ -98,9 +97,9 @@ class DWARFContext : public DIContext {
}

/// Get type units in the DWO context.
tu_section_iterator_range dwo_type_unit_sections() {
tu_iterator_range dwo_type_units() {
parseDWOTypeUnits();
return tu_section_iterator_range(DWOTUs.begin(), DWOTUs.end());
return tu_iterator_range(DWOTUs.begin(), DWOTUs.end());
}

/// Get the number of compile units in this context.
Expand Down

0 comments on commit a0d5d7a

Please sign in to comment.