[llvm] r196398 - Use move and stack allocation for RangeSpanLists. As a result make

Eric Christopher echristo at gmail.com
Wed Dec 4 11:06:58 PST 2013


Author: echristo
Date: Wed Dec  4 13:06:58 2013
New Revision: 196398

URL: http://llvm.org/viewvc/llvm-project?rev=196398&view=rev
Log:
Use move and stack allocation for RangeSpanLists. As a result make
a few things more const as well because we're now using const
references to refer to iterators.

Modified:
    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=196398&r1=196397&r2=196398&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Wed Dec  4 13:06:58 2013
@@ -471,17 +471,17 @@ void DwarfDebug::addScopeRangeList(Compi
   // emitting it appropriately.
   TheCU->addSectionLabel(ScopeDIE, dwarf::DW_AT_ranges,
                          Asm->GetTempSymbol("debug_ranges", GlobalRangeCount));
-  RangeSpanList *List = new RangeSpanList(GlobalRangeCount++);
+  RangeSpanList List(GlobalRangeCount++);
   for (SmallVectorImpl<InsnRange>::const_iterator RI = Range.begin(),
                                                   RE = Range.end();
        RI != RE; ++RI) {
     RangeSpan Span(getLabelBeforeInsn(RI->first),
                    getLabelAfterInsn(RI->second));
-    List->addRange(Span);
+    List.addRange(llvm_move(Span));
   }
 
   // Add the range list to the set of ranges to be emitted.
-  TheCU->addRangeList(List);
+  TheCU->addRangeList(llvm_move(List));
 }
 
 // Construct new DW_TAG_lexical_block for this scope and attach
@@ -2938,22 +2938,22 @@ void DwarfDebug::emitDebugRanges() {
     Asm->OutStreamer.EmitLabel(Asm->GetTempSymbol("gnu_ranges", ID));
 
     // Iterate over the misc ranges for the compile units in the module.
-    const SmallVectorImpl<RangeSpanList *> &RangeLists = TheCU->getRangeLists();
-    for (SmallVectorImpl<RangeSpanList *>::const_iterator
+    const SmallVectorImpl<RangeSpanList> &RangeLists = TheCU->getRangeLists();
+    for (SmallVectorImpl<RangeSpanList>::const_iterator
              I = RangeLists.begin(),
              E = RangeLists.end();
          I != E; ++I) {
-      RangeSpanList *List = *I;
+      const RangeSpanList &List = *I;
 
       // Emit a symbol so we can find the beginning of the range.
       Asm->OutStreamer.EmitLabel(
-          Asm->GetTempSymbol("debug_ranges", List->getIndex()));
+          Asm->GetTempSymbol("debug_ranges", List.getIndex()));
 
       for (SmallVectorImpl<RangeSpan>::const_iterator
-               I = List->getRanges().begin(),
-               E = List->getRanges().end();
-           I != E; ++I) {
-        RangeSpan Range = *I;
+               RI = List.getRanges().begin(),
+               RE = List.getRanges().end();
+           RI != RE; ++RI) {
+        const RangeSpan &Range = *RI;
         // We occasionally have ranges without begin/end labels.
         // FIXME: Verify and fix.
         const MCSymbol *Begin = Range.getStart();

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp?rev=196398&r1=196397&r2=196398&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp Wed Dec  4 13:06:58 2013
@@ -59,10 +59,6 @@ TypeUnit::TypeUnit(unsigned UID, DIE *D,
 Unit::~Unit() {
   for (unsigned j = 0, M = DIEBlocks.size(); j < M; ++j)
     DIEBlocks[j]->~DIEBlock();
-  for (SmallVectorImpl<RangeSpanList *>::iterator RI = getRangeLists().begin(),
-                                                  RE = getRangeLists().end();
-       RI != RE; ++RI)
-    delete *RI;
 }
 
 /// createDIEEntry - Creates a new DIEEntry to be a proxy for a debug

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h?rev=196398&r1=196397&r2=196398&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h Wed Dec  4 13:06:58 2013
@@ -35,8 +35,8 @@ class DbgVariable;
 class RangeSpan {
 public:
   RangeSpan(MCSymbol *S, MCSymbol *E) : Start(S), End(E) {}
-  const MCSymbol *getStart() { return Start; }
-  const MCSymbol *getEnd() { return End; }
+  const MCSymbol *getStart() const { return Start; }
+  const MCSymbol *getEnd() const { return End; }
 
 private:
   const MCSymbol *Start, *End;
@@ -119,7 +119,7 @@ protected:
 
   // List of range lists for a given compile unit, separate from the ranges for
   // the CU itself.
-  SmallVector<RangeSpanList *, 1> CURangeLists;
+  SmallVector<RangeSpanList, 1> CURangeLists;
 
   // DIEValueAllocator - All DIEValues are allocated through this allocator.
   BumpPtrAllocator DIEValueAllocator;
@@ -162,13 +162,13 @@ public:
   bool hasContent() const { return !UnitDie->getChildren().empty(); }
 
   /// addRangeList - Add an address range list to the list of range lists.
-  void addRangeList(RangeSpanList *Ranges) { CURangeLists.push_back(Ranges); }
+  void addRangeList(RangeSpanList Ranges) { CURangeLists.push_back(Ranges); }
 
   /// getRangeLists - Get the vector of range lists.
-  const SmallVectorImpl<RangeSpanList *> &getRangeLists() const {
+  const SmallVectorImpl<RangeSpanList> &getRangeLists() const {
     return CURangeLists;
   }
-  SmallVectorImpl<RangeSpanList *> &getRangeLists() { return CURangeLists; }
+  SmallVectorImpl<RangeSpanList> &getRangeLists() { return CURangeLists; }
 
   /// getParentContextString - Get a string containing the language specific
   /// context for a global name.





More information about the llvm-commits mailing list