diff options
author | Eric Christopher <echristo@gmail.com> | 2014-02-20 02:40:45 +0000 |
---|---|---|
committer | Eric Christopher <echristo@gmail.com> | 2014-02-20 02:40:45 +0000 |
commit | eed3d708ee72d9b580fd7614e36924bfeab7e988 (patch) | |
tree | f98c9d5b166ecfe90e565791c29b0eb745600196 | |
parent | 0af815c0dc8f6996962fe4f56e5f2c716e40bac5 (diff) | |
download | llvm-eed3d708ee72d9b580fd7614e36924bfeab7e988.tar.gz llvm-eed3d708ee72d9b580fd7614e36924bfeab7e988.tar.bz2 llvm-eed3d708ee72d9b580fd7614e36924bfeab7e988.tar.xz |
Make DIELoc/DIEBlock's ComputeSize method const. Add a setSize
method to actually set it in the class to avoid computing it
multiple times.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201751 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/CodeGen/AsmPrinter/DIE.cpp | 32 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/DIE.h | 12 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfUnit.cpp | 4 |
3 files changed, 30 insertions, 18 deletions
diff --git a/lib/CodeGen/AsmPrinter/DIE.cpp b/lib/CodeGen/AsmPrinter/DIE.cpp index 79c4b438f8..845bb4610a 100644 --- a/lib/CodeGen/AsmPrinter/DIE.cpp +++ b/lib/CodeGen/AsmPrinter/DIE.cpp @@ -424,14 +424,16 @@ void DIETypeSignature::dump() const { print(dbgs()); } /// ComputeSize - calculate the size of the location expression. /// -unsigned DIELoc::ComputeSize(AsmPrinter *AP) { - 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 DIELoc::ComputeSize(AsmPrinter *AP) const { + if (Size) + return Size; + + 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 Size; + return Sz; } /// EmitValue - Emit location data. @@ -479,14 +481,16 @@ void DIELoc::print(raw_ostream &O) const { /// ComputeSize - calculate the size of the block. /// -unsigned DIEBlock::ComputeSize(AsmPrinter *AP) { - 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 DIEBlock::ComputeSize(AsmPrinter *AP) const { + if (Size) + return Size; + + 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 Size; + return Sz; } /// EmitValue - Emit block data. diff --git a/lib/CodeGen/AsmPrinter/DIE.h b/lib/CodeGen/AsmPrinter/DIE.h index a35229da91..d4f3154d15 100644 --- a/lib/CodeGen/AsmPrinter/DIE.h +++ b/lib/CodeGen/AsmPrinter/DIE.h @@ -451,7 +451,11 @@ namespace llvm { /// ComputeSize - Calculate the size of the location expression. /// - unsigned ComputeSize(AsmPrinter *AP); + 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. /// @@ -490,7 +494,11 @@ namespace llvm { /// ComputeSize - Calculate the size of the location expression. /// - unsigned ComputeSize(AsmPrinter *AP); + 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. /// diff --git a/lib/CodeGen/AsmPrinter/DwarfUnit.cpp b/lib/CodeGen/AsmPrinter/DwarfUnit.cpp index dfffcadf61..81dbfc505a 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->ComputeSize(Asm); + Loc->setSize(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->ComputeSize(Asm); + Block->setSize(Block->ComputeSize(Asm)); DIEBlocks.push_back(Block); // Memoize so we can call the destructor later on. Die->addValue(Attribute, Block->BestForm(), Block); } |