[llvm] r217015 - Revert "Use unique_ptr to manager FilterChooser ownership."

Craig Topper craig.topper at gmail.com
Tue Sep 2 22:59:23 PDT 2014


Author: ctopper
Date: Wed Sep  3 00:59:23 2014
New Revision: 217015

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

std::map::emplace isn't working on some of the bots.

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=217015&r1=217014&r2=217015&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/FixedLenDecoderEmitter.cpp (original)
+++ llvm/trunk/utils/TableGen/FixedLenDecoderEmitter.cpp Wed Sep  3 00:59:23 2014
@@ -230,7 +230,7 @@ protected:
   std::vector<unsigned> VariableInstructions;
 
   // Map of well-known segment value to its delegate.
-  std::map<unsigned, std::unique_ptr<const FilterChooser>> FilterChooserMap;
+  std::map<unsigned, const FilterChooser*> FilterChooserMap;
 
   // Number of instructions which fall under FilteredInstructions category.
   unsigned NumFiltered;
@@ -530,6 +530,12 @@ 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
@@ -551,12 +557,14 @@ void Filter::recurse() {
 
     // Delegates to an inferior filter chooser for further processing on this
     // group of instructions whose segment values are variable.
-    FilterChooserMap.emplace((unsigned)-1,
-                             make_unique<FilterChooser>(Owner->AllInstructions,
-                                                        VariableInstructions,
-                                                        Owner->Operands,
-                                                        BitValueArray,
-                                                        *Owner));
+    FilterChooserMap.insert(std::pair<unsigned, const FilterChooser*>(
+                              (unsigned)-1,
+                              new FilterChooser(Owner->AllInstructions,
+                                                VariableInstructions,
+                                                Owner->Operands,
+                                                BitValueArray,
+                                                *Owner)
+                              ));
   }
 
   // No need to recurse for a singleton filtered instruction.
@@ -582,12 +590,14 @@ void Filter::recurse() {
 
     // Delegates to an inferior filter chooser for further processing on this
     // category of instructions.
-    FilterChooserMap.emplace(mapIterator->first,
-                             make_unique<FilterChooser>(Owner->AllInstructions,
-                                                        mapIterator->second,
-                                                        Owner->Operands,
-                                                        BitValueArray,
-                                                        *Owner));
+    FilterChooserMap.insert(std::pair<unsigned, const FilterChooser*>(
+                              mapIterator->first,
+                              new FilterChooser(Owner->AllInstructions,
+                                                mapIterator->second,
+                                                Owner->Operands,
+                                                BitValueArray,
+                                                *Owner)
+                              ));
   }
 }
 
@@ -622,8 +632,7 @@ void Filter::emitTableEntry(DecoderTable
   // A new filter entry begins a new scope for fixup resolution.
   TableInfo.FixupStack.push_back(FixupList());
 
-  std::map<unsigned,
-           std::unique_ptr<const FilterChooser>>::const_iterator filterIterator;
+  std::map<unsigned, const FilterChooser*>::const_iterator filterIterator;
 
   DecoderTable &Table = TableInfo.Table;
 





More information about the llvm-commits mailing list