summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/AsmPrinter
diff options
context:
space:
mode:
authorEric Christopher <echristo@gmail.com>2014-02-27 18:36:10 +0000
committerEric Christopher <echristo@gmail.com>2014-02-27 18:36:10 +0000
commit8bdab4396457091c232a7e193cd83cb0dedb8ed1 (patch)
treeed8a630f4536d2d907b3f58b754094506274ad67 /llvm/lib/CodeGen/AsmPrinter
parent7072073cc99b63a39cefaea71ae331642d95d96e (diff)
downloadbcm5719-llvm-8bdab4396457091c232a7e193cd83cb0dedb8ed1.tar.gz
bcm5719-llvm-8bdab4396457091c232a7e193cd83cb0dedb8ed1.zip
Revert r201751 and solve the const problem a different way - by
making the cache mutable. llvm-svn: 202417
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DIE.cpp28
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DIE.h12
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp4
3 files changed, 16 insertions, 28 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DIE.cpp b/llvm/lib/CodeGen/AsmPrinter/DIE.cpp
index cf8cbd5b7ea..4722d2b5501 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DIE.cpp
+++ b/llvm/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<DIEAbbrevData> &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<DIEAbbrevData> &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<DIEAbbrevData> &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<DIEAbbrevData> &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/llvm/lib/CodeGen/AsmPrinter/DIE.h b/llvm/lib/CodeGen/AsmPrinter/DIE.h
index d4f3154d15c..0a60859b7e5 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DIE.h
+++ b/llvm/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/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
index 2ac9f0194f4..b42869bbe0b 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
+++ b/llvm/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);
}
OpenPOWER on IntegriCloud