mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
Revert r201751 and solve the const problem a different way - by
making the cache mutable. llvm-svn: 202417
This commit is contained in:
parent
d7f77dd966
commit
a35169d497
@ -426,15 +426,13 @@ void DIETypeSignature::dump() const { print(dbgs()); }
|
||||
/// ComputeSize - calculate the size of the location expression.
|
||||
///
|
||||
unsigned DIELoc::ComputeSize(AsmPrinter *AP) const {
|
||||
if (Size)
|
||||
return Size;
|
||||
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());
|
||||
}
|
||||
|
||||
unsigned Sz = 0;
|
||||
const SmallVectorImpl<DIEAbbrevData> &AbbrevData = Abbrev.getData();
|
||||
for (unsigned i = 0, N = Values.size(); i < N; ++i)
|
||||
Sz += Values[i]->SizeOf(AP, AbbrevData[i].getForm());
|
||||
|
||||
return Sz;
|
||||
return Size;
|
||||
}
|
||||
|
||||
/// EmitValue - Emit location data.
|
||||
@ -483,15 +481,13 @@ void DIELoc::print(raw_ostream &O) const {
|
||||
/// ComputeSize - calculate the size of the block.
|
||||
///
|
||||
unsigned DIEBlock::ComputeSize(AsmPrinter *AP) const {
|
||||
if (Size)
|
||||
return Size;
|
||||
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());
|
||||
}
|
||||
|
||||
unsigned Sz = 0;
|
||||
const SmallVectorImpl<DIEAbbrevData> &AbbrevData = Abbrev.getData();
|
||||
for (unsigned i = 0, N = Values.size(); i < N; ++i)
|
||||
Sz += Values[i]->SizeOf(AP, AbbrevData[i].getForm());
|
||||
|
||||
return Sz;
|
||||
return Size;
|
||||
}
|
||||
|
||||
/// EmitValue - Emit block data.
|
||||
|
@ -445,7 +445,7 @@ namespace llvm {
|
||||
/// DIELoc - Represents an expression location.
|
||||
//
|
||||
class DIELoc : public DIEValue, public DIE {
|
||||
unsigned Size; // Size in bytes excluding size header.
|
||||
mutable unsigned Size; // Size in bytes excluding size header.
|
||||
public:
|
||||
DIELoc() : DIEValue(isLoc), DIE(0), Size(0) {}
|
||||
|
||||
@ -453,10 +453,6 @@ namespace llvm {
|
||||
///
|
||||
unsigned ComputeSize(AsmPrinter *AP) const;
|
||||
|
||||
/// setSize - Set the size of the location entry.
|
||||
///
|
||||
void setSize(unsigned Sz) { Size = Sz; }
|
||||
|
||||
/// BestForm - Choose the best form for data.
|
||||
///
|
||||
dwarf::Form BestForm(unsigned DwarfVersion) const {
|
||||
@ -488,7 +484,7 @@ namespace llvm {
|
||||
/// DIEBlock - Represents a block of values.
|
||||
//
|
||||
class DIEBlock : public DIEValue, public DIE {
|
||||
unsigned Size; // Size in bytes excluding size header.
|
||||
mutable unsigned Size; // Size in bytes excluding size header.
|
||||
public:
|
||||
DIEBlock() : DIEValue(isBlock), DIE(0), Size(0) {}
|
||||
|
||||
@ -496,10 +492,6 @@ namespace llvm {
|
||||
///
|
||||
unsigned ComputeSize(AsmPrinter *AP) const;
|
||||
|
||||
/// setSize - Set the size of the block.
|
||||
///
|
||||
void setSize(unsigned Sz) { Size = Sz; }
|
||||
|
||||
/// BestForm - Choose the best form for data.
|
||||
///
|
||||
dwarf::Form BestForm() const {
|
||||
|
@ -348,14 +348,14 @@ DIE *DwarfUnit::createAndAddDIE(unsigned Tag, DIE &Parent, DIDescriptor N) {
|
||||
/// addBlock - Add block data.
|
||||
///
|
||||
void DwarfUnit::addBlock(DIE *Die, dwarf::Attribute Attribute, DIELoc *Loc) {
|
||||
Loc->setSize(Loc->ComputeSize(Asm));
|
||||
Loc->ComputeSize(Asm);
|
||||
DIELocs.push_back(Loc); // Memoize so we can call the destructor later on.
|
||||
Die->addValue(Attribute, Loc->BestForm(DD->getDwarfVersion()), Loc);
|
||||
}
|
||||
|
||||
void DwarfUnit::addBlock(DIE *Die, dwarf::Attribute Attribute,
|
||||
DIEBlock *Block) {
|
||||
Block->setSize(Block->ComputeSize(Asm));
|
||||
Block->ComputeSize(Asm);
|
||||
DIEBlocks.push_back(Block); // Memoize so we can call the destructor later on.
|
||||
Die->addValue(Attribute, Block->BestForm(), Block);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user