[llvm] r217018 - Recommit "Use unique_ptr to manager FilterChooser ownership."

Craig Topper craig.topper at gmail.com
Tue Sep 2 23:07:54 PDT 2014


Author: ctopper
Date: Wed Sep  3 01:07:54 2014
New Revision: 217018

URL: http://llvm.org/viewvc/llvm-project?rev=217018&view=rev
Log:
Recommit "Use unique_ptr to manager FilterChooser ownership."

Just using insert of a pair this time instead of emplace.

Modified:
    llvm/trunk/utils/TableGen/FixedLenDecoderEmitter.cpp

Modified: llvm/trunk/utils/TableGen/FixedLenDecoderEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/FixedLenDecoderEmitter.cpp?rev=217018&r1=217017&r2=217018&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/FixedLenDecoderEmitter.cpp (original)
+++ llvm/trunk/utils/TableGen/FixedLenDecoderEmitter.cpp Wed Sep  3 01:07:54 2014
@@ -230,7 +230,7 @@ protected:
   std::vector<unsigned> VariableInstructions;
 
   // Map of well-known segment value to its delegate.
-  std::map<unsigned, const FilterChooser*> FilterChooserMap;
+  std::map<unsigned, std::unique_ptr<const FilterChooser>> FilterChooserMap;
 
   // Number of instructions which fall under FilteredInstructions category.
   unsigned NumFiltered;
@@ -530,12 +530,6 @@ Filter::Filter(FilterChooser &owner, uns
 }
 
 Filter::~Filter() {
-  std::map<unsigned, const FilterChooser*>::iterator filterIterator;
-  for (filterIterator = FilterChooserMap.begin();
-       filterIterator != FilterChooserMap.end();
-       filterIterator++) {
-    delete filterIterator->second;
-  }
 }
 
 // Divides the decoding task into sub tasks and delegates them to the
@@ -557,14 +551,13 @@ void Filter::recurse() {
 
     // Delegates to an inferior filter chooser for further processing on this
     // group of instructions whose segment values are variable.
-    FilterChooserMap.insert(std::pair<unsigned, const FilterChooser*>(
-                              (unsigned)-1,
-                              new FilterChooser(Owner->AllInstructions,
-                                                VariableInstructions,
-                                                Owner->Operands,
-                                                BitValueArray,
-                                                *Owner)
-                              ));
+    FilterChooserMap.insert(std::make_pair(
+                              -1U,
+                              make_unique<FilterChooser>(Owner->AllInstructions,
+                                                         VariableInstructions,
+                                                         Owner->Operands,
+                                                         BitValueArray,
+                                                         *Owner)));
   }
 
   // No need to recurse for a singleton filtered instruction.
@@ -590,14 +583,13 @@ void Filter::recurse() {
 
     // Delegates to an inferior filter chooser for further processing on this
     // category of instructions.
-    FilterChooserMap.insert(std::pair<unsigned, const FilterChooser*>(
+    FilterChooserMap.insert(std::make_pair(
                               mapIterator->first,
-                              new FilterChooser(Owner->AllInstructions,
-                                                mapIterator->second,
-                                                Owner->Operands,
-                                                BitValueArray,
-                                                *Owner)
-                              ));
+                              make_unique<FilterChooser>(Owner->AllInstructions,
+                                                         mapIterator->second,
+                                                         Owner->Operands,
+                                                         BitValueArray,
+                                                         *Owner)));
   }
 }
 
@@ -632,7 +624,8 @@ void Filter::emitTableEntry(DecoderTable
   // A new filter entry begins a new scope for fixup resolution.
   TableInfo.FixupStack.push_back(FixupList());
 
-  std::map<unsigned, const FilterChooser*>::const_iterator filterIterator;
+  std::map<unsigned,
+           std::unique_ptr<const FilterChooser>>::const_iterator filterIterator;
 
   DecoderTable &Table = TableInfo.Table;
 





More information about the llvm-commits mailing list