From: Eric Christopher Date: Thu, 27 Feb 2014 18:36:10 +0000 (+0000) Subject: Revert r201751 and solve the const problem a different way - by X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=e6a9693ab1710187eeb554ba7f4a2c3dd5557caa;p=oota-llvm.git Revert r201751 and solve the const problem a different way - by making the cache mutable. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@202417 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/AsmPrinter/DIE.cpp b/lib/CodeGen/AsmPrinter/DIE.cpp index cf8cbd5b7ea..4722d2b5501 100644 --- a/lib/CodeGen/AsmPrinter/DIE.cpp +++ b/lib/CodeGen/AsmPrinter/DIE.cpp @@ -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; - - unsigned Sz = 0; - const SmallVectorImpl &AbbrevData = Abbrev.getData(); - for (unsigned i = 0, N = Values.size(); i < N; ++i) - Sz += Values[i]->SizeOf(AP, AbbrevData[i].getForm()); + if (!Size) { + const SmallVectorImpl &AbbrevData = Abbrev.getData(); + for (unsigned i = 0, N = Values.size(); i < N; ++i) + Size += 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; - - unsigned Sz = 0; - const SmallVectorImpl &AbbrevData = Abbrev.getData(); - for (unsigned i = 0, N = Values.size(); i < N; ++i) - Sz += Values[i]->SizeOf(AP, AbbrevData[i].getForm()); + if (!Size) { + const SmallVectorImpl &AbbrevData = Abbrev.getData(); + for (unsigned i = 0, N = Values.size(); i < N; ++i) + Size += Values[i]->SizeOf(AP, AbbrevData[i].getForm()); + } - return Sz; + return Size; } /// EmitValue - Emit block data. diff --git a/lib/CodeGen/AsmPrinter/DIE.h b/lib/CodeGen/AsmPrinter/DIE.h index d4f3154d15c..0a60859b7e5 100644 --- a/lib/CodeGen/AsmPrinter/DIE.h +++ b/lib/CodeGen/AsmPrinter/DIE.h @@ -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 { diff --git a/lib/CodeGen/AsmPrinter/DwarfUnit.cpp b/lib/CodeGen/AsmPrinter/DwarfUnit.cpp index 2ac9f0194f4..b42869bbe0b 100644 --- a/lib/CodeGen/AsmPrinter/DwarfUnit.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfUnit.cpp @@ -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); }