From: Craig Topper Date: Wed, 3 Sep 2014 05:59:23 +0000 (+0000) Subject: Revert "Use unique_ptr to manager FilterChooser ownership." X-Git-Tag: android-x86-7.1-r4~57887 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=6426140b901104b8f9333e9168c0e96a2a8e2c25;p=android-x86%2Fexternal-llvm.git Revert "Use unique_ptr to manager FilterChooser ownership." std::map::emplace isn't working on some of the bots. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217015 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/utils/TableGen/FixedLenDecoderEmitter.cpp b/utils/TableGen/FixedLenDecoderEmitter.cpp index c93cbb20af4..27114cba5e5 100644 --- a/utils/TableGen/FixedLenDecoderEmitter.cpp +++ b/utils/TableGen/FixedLenDecoderEmitter.cpp @@ -230,7 +230,7 @@ protected: std::vector VariableInstructions; // Map of well-known segment value to its delegate. - std::map> FilterChooserMap; + std::map FilterChooserMap; // Number of instructions which fall under FilteredInstructions category. unsigned NumFiltered; @@ -530,6 +530,12 @@ Filter::Filter(FilterChooser &owner, unsigned startBit, unsigned numBits, } Filter::~Filter() { + std::map::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(Owner->AllInstructions, - VariableInstructions, - Owner->Operands, - BitValueArray, - *Owner)); + FilterChooserMap.insert(std::pair( + (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(Owner->AllInstructions, - mapIterator->second, - Owner->Operands, - BitValueArray, - *Owner)); + FilterChooserMap.insert(std::pair( + mapIterator->first, + new FilterChooser(Owner->AllInstructions, + mapIterator->second, + Owner->Operands, + BitValueArray, + *Owner) + )); } } @@ -622,8 +632,7 @@ void Filter::emitTableEntry(DecoderTableInfo &TableInfo) const { // A new filter entry begins a new scope for fixup resolution. TableInfo.FixupStack.push_back(FixupList()); - std::map>::const_iterator filterIterator; + std::map::const_iterator filterIterator; DecoderTable &Table = TableInfo.Table;