mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-22 23:24:59 +00:00
Reapply "AsmPrinter: Change DIEValue to be stored by value"
This reverts commit r238350, effectively reapplying r238349 after fixing (all?) the problems, all somehow related to how I was using `AlignedArrayCharUnion<>` inside `DIEValue`: - MSVC can only handle `sizeof()` on types, not values. Change the assert. - GCC doesn't know the `is_trivially_copyable` type trait. Instead of asserting it, add destructors. - Call placement new even when constructing POD (i.e., the pointers). - Instead of copying the char buffer, copy the casted classes. I've left in a couple of `static_assert`s that I think both MSVC and GCC know how to handle. If the bots disagree with me, I'll remove them. - Check that the constructed type is either standard layout or a pointer. This protects against a programming error: we really want the "small" `DIEValue`s to be small and simple, so don't accidentally change them not to be. - Similarly, check that the size of the buffer is no bigger than a `uint64_t` or a pointer. (I thought checking against `sizeof(uint64_t)` would be good enough, but Chandler suggested that pointers might sometimes be bigger than that in the context of sanitizers.) I've also committed r238359 in the meantime, which introduces a DIEValue.def to simplify dispatching between the various types (thanks to a review comment by David Blaikie). Without that, this commit would be almost unintelligible. Here's the original commit message: -- Change `DIEValue` to be stored/passed/etc. by value, instead of reference. It's now a discriminated union, with a `Val` field storing the actual type. The classes that used to inherit from `DIEValue` no longer do. There are two categories of these: - Small values fit in a single pointer and are stored by value. - Large values require auxiliary storage, and are stored by reference. The only non-mechanical change is to tools/dsymutil/DwarfLinker.cpp. It was relying on `DIEInteger`s being passed around by reference, so I replaced that assumption with a `PatchLocation` type that stores a safe reference to where the `DIEInteger` lives instead. This commit causes a temporary regression in memory usage, since I've left merging `DIEAbbrevData` into `DIEValue` for a follow-up commit. I measured an increase from 845 MB to 879 MB, around 3.9%. The follow-up drops it lower than the starting point, and I've only recently brought the memory this low anyway, so I'm committing these changes separately to keep them incremental. (I also considered swapping the commits, but the other one first would cause a lot more code churn.) (I'm looking at `llc` memory usage on `verify-uselistorder.lto.opt.bc`; see r236629 for details.) -- git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238362 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -128,8 +128,8 @@ const DIE *DIE::getUnitOrNull() const {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
DIEValue *DIE::findAttribute(dwarf::Attribute Attribute) const {
|
||||
const SmallVectorImpl<DIEValue *> &Values = getValues();
|
||||
DIEValue DIE::findAttribute(dwarf::Attribute Attribute) const {
|
||||
const SmallVectorImpl<DIEValue> &Values = getValues();
|
||||
const DIEAbbrev &Abbrevs = getAbbrev();
|
||||
|
||||
// Iterate through all the attributes until we find the one we're
|
||||
@@ -137,7 +137,7 @@ DIEValue *DIE::findAttribute(dwarf::Attribute Attribute) const {
|
||||
for (size_t i = 0; i < Values.size(); ++i)
|
||||
if (Abbrevs.getData()[i].getAttribute() == Attribute)
|
||||
return Values[i];
|
||||
return nullptr;
|
||||
return DIEValue();
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
@@ -174,7 +174,7 @@ void DIE::print(raw_ostream &O, unsigned IndentCount) const {
|
||||
O << " "
|
||||
<< dwarf::FormEncodingString(Data[i].getForm())
|
||||
<< " ";
|
||||
Values[i]->print(O);
|
||||
Values[i].print(O);
|
||||
O << "\n";
|
||||
}
|
||||
IndentCount -= 2;
|
||||
@@ -193,9 +193,11 @@ void DIE::dump() {
|
||||
|
||||
void DIEValue::EmitValue(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
switch (Ty) {
|
||||
case isNone:
|
||||
llvm_unreachable("Expected valid DIEValue");
|
||||
#define HANDLE_DIEVALUE(T) \
|
||||
case is##T: \
|
||||
cast<DIE##T>(this)->EmitValueImpl(AP, Form); \
|
||||
getDIE##T().EmitValue(AP, Form); \
|
||||
break;
|
||||
#include "llvm/CodeGen/DIEValue.def"
|
||||
}
|
||||
@@ -203,9 +205,11 @@ void DIEValue::EmitValue(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
|
||||
unsigned DIEValue::SizeOf(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
switch (Ty) {
|
||||
case isNone:
|
||||
llvm_unreachable("Expected valid DIEValue");
|
||||
#define HANDLE_DIEVALUE(T) \
|
||||
case is##T: \
|
||||
return cast<DIE##T>(this)->SizeOfImpl(AP, Form);
|
||||
return getDIE##T().SizeOf(AP, Form);
|
||||
#include "llvm/CodeGen/DIEValue.def"
|
||||
}
|
||||
llvm_unreachable("Unknown DIE kind");
|
||||
@@ -214,9 +218,11 @@ unsigned DIEValue::SizeOf(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
#ifndef NDEBUG
|
||||
void DIEValue::print(raw_ostream &O) const {
|
||||
switch (Ty) {
|
||||
case isNone:
|
||||
llvm_unreachable("Expected valid DIEValue");
|
||||
#define HANDLE_DIEVALUE(T) \
|
||||
case is##T: \
|
||||
cast<DIE##T>(this)->printImpl(O); \
|
||||
getDIE##T().print(O); \
|
||||
break;
|
||||
#include "llvm/CodeGen/DIEValue.def"
|
||||
}
|
||||
@@ -233,7 +239,7 @@ void DIEValue::dump() const {
|
||||
|
||||
/// EmitValue - Emit integer of appropriate size.
|
||||
///
|
||||
void DIEInteger::EmitValueImpl(const AsmPrinter *Asm, dwarf::Form Form) const {
|
||||
void DIEInteger::EmitValue(const AsmPrinter *Asm, dwarf::Form Form) const {
|
||||
unsigned Size = ~0U;
|
||||
switch (Form) {
|
||||
case dwarf::DW_FORM_flag_present:
|
||||
@@ -269,7 +275,7 @@ void DIEInteger::EmitValueImpl(const AsmPrinter *Asm, dwarf::Form Form) const {
|
||||
|
||||
/// SizeOf - Determine size of integer value in bytes.
|
||||
///
|
||||
unsigned DIEInteger::SizeOfImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
unsigned DIEInteger::SizeOf(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
switch (Form) {
|
||||
case dwarf::DW_FORM_flag_present: return 0;
|
||||
case dwarf::DW_FORM_flag: // Fall thru
|
||||
@@ -298,7 +304,7 @@ unsigned DIEInteger::SizeOfImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
void DIEInteger::printImpl(raw_ostream &O) const {
|
||||
void DIEInteger::print(raw_ostream &O) const {
|
||||
O << "Int: " << (int64_t)Integer << " 0x";
|
||||
O.write_hex(Integer);
|
||||
}
|
||||
@@ -310,13 +316,13 @@ void DIEInteger::printImpl(raw_ostream &O) const {
|
||||
|
||||
/// EmitValue - Emit expression value.
|
||||
///
|
||||
void DIEExpr::EmitValueImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
void DIEExpr::EmitValue(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
AP->OutStreamer->EmitValue(Expr, SizeOf(AP, Form));
|
||||
}
|
||||
|
||||
/// SizeOf - Determine size of expression value in bytes.
|
||||
///
|
||||
unsigned DIEExpr::SizeOfImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
unsigned DIEExpr::SizeOf(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
if (Form == dwarf::DW_FORM_data4) return 4;
|
||||
if (Form == dwarf::DW_FORM_sec_offset) return 4;
|
||||
if (Form == dwarf::DW_FORM_strp) return 4;
|
||||
@@ -324,7 +330,7 @@ unsigned DIEExpr::SizeOfImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
void DIEExpr::printImpl(raw_ostream &O) const { O << "Expr: " << *Expr; }
|
||||
void DIEExpr::print(raw_ostream &O) const { O << "Expr: " << *Expr; }
|
||||
#endif
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
@@ -333,7 +339,7 @@ void DIEExpr::printImpl(raw_ostream &O) const { O << "Expr: " << *Expr; }
|
||||
|
||||
/// EmitValue - Emit label value.
|
||||
///
|
||||
void DIELabel::EmitValueImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
void DIELabel::EmitValue(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
AP->EmitLabelReference(Label, SizeOf(AP, Form),
|
||||
Form == dwarf::DW_FORM_strp ||
|
||||
Form == dwarf::DW_FORM_sec_offset ||
|
||||
@@ -342,7 +348,7 @@ void DIELabel::EmitValueImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
|
||||
/// SizeOf - Determine size of label value in bytes.
|
||||
///
|
||||
unsigned DIELabel::SizeOfImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
unsigned DIELabel::SizeOf(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
if (Form == dwarf::DW_FORM_data4) return 4;
|
||||
if (Form == dwarf::DW_FORM_sec_offset) return 4;
|
||||
if (Form == dwarf::DW_FORM_strp) return 4;
|
||||
@@ -350,9 +356,7 @@ unsigned DIELabel::SizeOfImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
void DIELabel::printImpl(raw_ostream &O) const {
|
||||
O << "Lbl: " << Label->getName();
|
||||
}
|
||||
void DIELabel::print(raw_ostream &O) const { O << "Lbl: " << Label->getName(); }
|
||||
#endif
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
@@ -361,13 +365,13 @@ void DIELabel::printImpl(raw_ostream &O) const {
|
||||
|
||||
/// EmitValue - Emit delta value.
|
||||
///
|
||||
void DIEDelta::EmitValueImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
void DIEDelta::EmitValue(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
AP->EmitLabelDifference(LabelHi, LabelLo, SizeOf(AP, Form));
|
||||
}
|
||||
|
||||
/// SizeOf - Determine size of delta value in bytes.
|
||||
///
|
||||
unsigned DIEDelta::SizeOfImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
unsigned DIEDelta::SizeOf(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
if (Form == dwarf::DW_FORM_data4) return 4;
|
||||
if (Form == dwarf::DW_FORM_sec_offset) return 4;
|
||||
if (Form == dwarf::DW_FORM_strp) return 4;
|
||||
@@ -375,7 +379,7 @@ unsigned DIEDelta::SizeOfImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
void DIEDelta::printImpl(raw_ostream &O) const {
|
||||
void DIEDelta::print(raw_ostream &O) const {
|
||||
O << "Del: " << LabelHi->getName() << "-" << LabelLo->getName();
|
||||
}
|
||||
#endif
|
||||
@@ -386,7 +390,7 @@ void DIEDelta::printImpl(raw_ostream &O) const {
|
||||
|
||||
/// EmitValue - Emit string value.
|
||||
///
|
||||
void DIEString::EmitValueImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
void DIEString::EmitValue(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
assert(
|
||||
(Form == dwarf::DW_FORM_strp || Form == dwarf::DW_FORM_GNU_str_index) &&
|
||||
"Expected valid string form");
|
||||
@@ -410,7 +414,7 @@ void DIEString::EmitValueImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
|
||||
/// SizeOf - Determine size of delta value in bytes.
|
||||
///
|
||||
unsigned DIEString::SizeOfImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
unsigned DIEString::SizeOf(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
assert(
|
||||
(Form == dwarf::DW_FORM_strp || Form == dwarf::DW_FORM_GNU_str_index) &&
|
||||
"Expected valid string form");
|
||||
@@ -428,7 +432,7 @@ unsigned DIEString::SizeOfImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
void DIEString::printImpl(raw_ostream &O) const {
|
||||
void DIEString::print(raw_ostream &O) const {
|
||||
O << "String: " << S.getString();
|
||||
}
|
||||
#endif
|
||||
@@ -439,16 +443,16 @@ void DIEString::printImpl(raw_ostream &O) const {
|
||||
|
||||
/// EmitValue - Emit debug information entry offset.
|
||||
///
|
||||
void DIEEntry::EmitValueImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
void DIEEntry::EmitValue(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
|
||||
if (Form == dwarf::DW_FORM_ref_addr) {
|
||||
const DwarfDebug *DD = AP->getDwarfDebug();
|
||||
unsigned Addr = Entry.getOffset();
|
||||
unsigned Addr = Entry->getOffset();
|
||||
assert(!DD->useSplitDwarf() && "TODO: dwo files can't have relocations.");
|
||||
// For DW_FORM_ref_addr, output the offset from beginning of debug info
|
||||
// section. Entry->getOffset() returns the offset from start of the
|
||||
// compile unit.
|
||||
DwarfCompileUnit *CU = DD->lookupUnit(Entry.getUnit());
|
||||
DwarfCompileUnit *CU = DD->lookupUnit(Entry->getUnit());
|
||||
assert(CU && "CUDie should belong to a CU.");
|
||||
Addr += CU->getDebugInfoOffset();
|
||||
if (AP->MAI->doesDwarfUseRelocationsAcrossSections())
|
||||
@@ -457,7 +461,7 @@ void DIEEntry::EmitValueImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
else
|
||||
AP->OutStreamer->EmitIntValue(Addr, DIEEntry::getRefAddrSize(AP));
|
||||
} else
|
||||
AP->EmitInt32(Entry.getOffset());
|
||||
AP->EmitInt32(Entry->getOffset());
|
||||
}
|
||||
|
||||
unsigned DIEEntry::getRefAddrSize(const AsmPrinter *AP) {
|
||||
@@ -473,7 +477,7 @@ unsigned DIEEntry::getRefAddrSize(const AsmPrinter *AP) {
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
void DIEEntry::printImpl(raw_ostream &O) const {
|
||||
void DIEEntry::print(raw_ostream &O) const {
|
||||
O << format("Die: 0x%lx", (long)(intptr_t)&Entry);
|
||||
}
|
||||
#endif
|
||||
@@ -481,14 +485,15 @@ void DIEEntry::printImpl(raw_ostream &O) const {
|
||||
//===----------------------------------------------------------------------===//
|
||||
// DIETypeSignature Implementation
|
||||
//===----------------------------------------------------------------------===//
|
||||
void DIETypeSignature::EmitValueImpl(const AsmPrinter *Asm, dwarf::Form Form) const {
|
||||
void DIETypeSignature::EmitValue(const AsmPrinter *Asm,
|
||||
dwarf::Form Form) const {
|
||||
assert(Form == dwarf::DW_FORM_ref_sig8);
|
||||
Asm->OutStreamer->EmitIntValue(Unit.getTypeSignature(), 8);
|
||||
Asm->OutStreamer->EmitIntValue(Unit->getTypeSignature(), 8);
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
void DIETypeSignature::printImpl(raw_ostream &O) const {
|
||||
O << format("Type Unit: 0x%lx", Unit.getTypeSignature());
|
||||
void DIETypeSignature::print(raw_ostream &O) const {
|
||||
O << format("Type Unit: 0x%lx", Unit->getTypeSignature());
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -502,7 +507,7 @@ unsigned DIELoc::ComputeSize(const AsmPrinter *AP) const {
|
||||
if (!Size) {
|
||||
const SmallVectorImpl<DIEAbbrevData> &AbbrevData = Abbrev.getData();
|
||||
for (unsigned i = 0, N = Values.size(); i < N; ++i)
|
||||
Size += Values[i]->SizeOf(AP, AbbrevData[i].getForm());
|
||||
Size += Values[i].SizeOf(AP, AbbrevData[i].getForm());
|
||||
}
|
||||
|
||||
return Size;
|
||||
@@ -510,7 +515,7 @@ unsigned DIELoc::ComputeSize(const AsmPrinter *AP) const {
|
||||
|
||||
/// EmitValue - Emit location data.
|
||||
///
|
||||
void DIELoc::EmitValueImpl(const AsmPrinter *Asm, dwarf::Form Form) const {
|
||||
void DIELoc::EmitValue(const AsmPrinter *Asm, dwarf::Form Form) const {
|
||||
switch (Form) {
|
||||
default: llvm_unreachable("Improper form for block");
|
||||
case dwarf::DW_FORM_block1: Asm->EmitInt8(Size); break;
|
||||
@@ -523,12 +528,12 @@ void DIELoc::EmitValueImpl(const AsmPrinter *Asm, dwarf::Form Form) const {
|
||||
|
||||
const SmallVectorImpl<DIEAbbrevData> &AbbrevData = Abbrev.getData();
|
||||
for (unsigned i = 0, N = Values.size(); i < N; ++i)
|
||||
Values[i]->EmitValue(Asm, AbbrevData[i].getForm());
|
||||
Values[i].EmitValue(Asm, AbbrevData[i].getForm());
|
||||
}
|
||||
|
||||
/// SizeOf - Determine size of location data in bytes.
|
||||
///
|
||||
unsigned DIELoc::SizeOfImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
unsigned DIELoc::SizeOf(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
switch (Form) {
|
||||
case dwarf::DW_FORM_block1: return Size + sizeof(int8_t);
|
||||
case dwarf::DW_FORM_block2: return Size + sizeof(int16_t);
|
||||
@@ -541,7 +546,7 @@ unsigned DIELoc::SizeOfImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
void DIELoc::printImpl(raw_ostream &O) const {
|
||||
void DIELoc::print(raw_ostream &O) const {
|
||||
O << "ExprLoc: ";
|
||||
DIE::print(O, 5);
|
||||
}
|
||||
@@ -557,7 +562,7 @@ unsigned DIEBlock::ComputeSize(const AsmPrinter *AP) const {
|
||||
if (!Size) {
|
||||
const SmallVectorImpl<DIEAbbrevData> &AbbrevData = Abbrev.getData();
|
||||
for (unsigned i = 0, N = Values.size(); i < N; ++i)
|
||||
Size += Values[i]->SizeOf(AP, AbbrevData[i].getForm());
|
||||
Size += Values[i].SizeOf(AP, AbbrevData[i].getForm());
|
||||
}
|
||||
|
||||
return Size;
|
||||
@@ -565,7 +570,7 @@ unsigned DIEBlock::ComputeSize(const AsmPrinter *AP) const {
|
||||
|
||||
/// EmitValue - Emit block data.
|
||||
///
|
||||
void DIEBlock::EmitValueImpl(const AsmPrinter *Asm, dwarf::Form Form) const {
|
||||
void DIEBlock::EmitValue(const AsmPrinter *Asm, dwarf::Form Form) const {
|
||||
switch (Form) {
|
||||
default: llvm_unreachable("Improper form for block");
|
||||
case dwarf::DW_FORM_block1: Asm->EmitInt8(Size); break;
|
||||
@@ -576,12 +581,12 @@ void DIEBlock::EmitValueImpl(const AsmPrinter *Asm, dwarf::Form Form) const {
|
||||
|
||||
const SmallVectorImpl<DIEAbbrevData> &AbbrevData = Abbrev.getData();
|
||||
for (unsigned i = 0, N = Values.size(); i < N; ++i)
|
||||
Values[i]->EmitValue(Asm, AbbrevData[i].getForm());
|
||||
Values[i].EmitValue(Asm, AbbrevData[i].getForm());
|
||||
}
|
||||
|
||||
/// SizeOf - Determine size of block data in bytes.
|
||||
///
|
||||
unsigned DIEBlock::SizeOfImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
unsigned DIEBlock::SizeOf(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
switch (Form) {
|
||||
case dwarf::DW_FORM_block1: return Size + sizeof(int8_t);
|
||||
case dwarf::DW_FORM_block2: return Size + sizeof(int16_t);
|
||||
@@ -592,7 +597,7 @@ unsigned DIEBlock::SizeOfImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
void DIEBlock::printImpl(raw_ostream &O) const {
|
||||
void DIEBlock::print(raw_ostream &O) const {
|
||||
O << "Blk: ";
|
||||
DIE::print(O, 5);
|
||||
}
|
||||
@@ -602,7 +607,7 @@ void DIEBlock::printImpl(raw_ostream &O) const {
|
||||
// DIELocList Implementation
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
unsigned DIELocList::SizeOfImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
unsigned DIELocList::SizeOf(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
if (Form == dwarf::DW_FORM_data4)
|
||||
return 4;
|
||||
if (Form == dwarf::DW_FORM_sec_offset)
|
||||
@@ -612,7 +617,7 @@ unsigned DIELocList::SizeOfImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
|
||||
/// EmitValue - Emit label value.
|
||||
///
|
||||
void DIELocList::EmitValueImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
void DIELocList::EmitValue(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
DwarfDebug *DD = AP->getDwarfDebug();
|
||||
MCSymbol *Label = DD->getDebugLocs().getList(Index).Label;
|
||||
|
||||
@@ -623,8 +628,5 @@ void DIELocList::EmitValueImpl(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
void DIELocList::printImpl(raw_ostream &O) const {
|
||||
O << "LocList: " << Index;
|
||||
|
||||
}
|
||||
void DIELocList::print(raw_ostream &O) const { O << "LocList: " << Index; }
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user