diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DIE.cpp | 32 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DIE.h | 12 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp | 4 | 
3 files changed, 30 insertions, 18 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DIE.cpp b/llvm/lib/CodeGen/AsmPrinter/DIE.cpp index 79c4b438f8e..845bb4610a2 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DIE.cpp +++ b/llvm/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/llvm/lib/CodeGen/AsmPrinter/DIE.h b/llvm/lib/CodeGen/AsmPrinter/DIE.h index a35229da910..d4f3154d15c 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DIE.h +++ b/llvm/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/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp index dfffcadf61e..81dbfc505ac 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->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);  }  | 

