llvm-6502/include/llvm/ADT
Reid Kleckner 151f8cef74 APInt: Make self-move-assignment a no-op to fix stage3 clang-cl
It's not clear what the semantics of a self-move should be.  The
consensus appears to be that a self-move should leave the object in a
moved-from state, which is what our existing move assignment operator
does.

However, the MSVC 2013 STL will perform self-moves in some cases.  In
particular, when doing a std::stable_sort of an already sorted APSInt
vector of an appropriate size, one of the merge steps will self-move
half of the elements.

We don't notice this when building with MSVC, because MSVC will not
synthesize the move assignment operator for APSInt.  Presumably MSVC
does this because APInt, the base class, has user-declared special
members that implicitly delete move special members.  Instead, MSVC
selects the copy-assign operator, which defends against self-assignment.
Clang, on the other hand, selects the move-assign operator, and we get
garbage APInts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215478 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-12 22:01:39 +00:00
..
APFloat.h [C++11] Make use of 'nullptr' in the Support library. 2014-04-07 04:17:22 +00:00
APInt.h APInt: Make self-move-assignment a no-op to fix stage3 clang-cl 2014-08-12 22:01:39 +00:00
APSInt.h ADT: correct typo in comment 2014-06-18 18:08:55 +00:00
ArrayRef.h [ADT] Add a remarkbly useful little helper routine to ArrayRef for 2014-07-27 01:11:19 +00:00
BitVector.h Attempting to fix the 64 bit bots. 2014-06-20 10:52:57 +00:00
DAGDeltaAlgorithm.h
DeltaAlgorithm.h
DenseMap.h Fix SmallDenseMap assignment operator. 2014-08-04 22:18:25 +00:00
DenseMapInfo.h
DenseSet.h Reverting size_type for the containers from size_type to unsigned. 2014-06-20 12:20:56 +00:00
DepthFirstIterator.h Implement depth_first and inverse_depth_first range factory functions. 2014-04-11 01:50:01 +00:00
edit_distance.h [C++11] Replace OwningPtr with std::unique_ptr in places where it doesn't break the API. 2014-04-21 09:34:48 +00:00
EquivalenceClasses.h [C++] Use 'nullptr'. 2014-04-28 04:05:08 +00:00
FoldingSet.h Add specialization of FoldingSetTrait for std::pair. 2014-06-15 14:42:25 +00:00
GraphTraits.h
Hashing.h Using llvm::sys::swapByteOrder() for the common case of byte-swapping a value in place 2014-06-14 13:18:07 +00:00
ilist_node.h [C++] Use 'nullptr'. 2014-04-24 06:44:33 +00:00
ilist.h Delete dead code. 2014-07-29 00:38:55 +00:00
ImmutableList.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
ImmutableMap.h [C++] Use 'nullptr'. 2014-04-24 06:44:33 +00:00
ImmutableSet.h [C++] Use 'nullptr'. 2014-04-24 06:44:33 +00:00
IndexedMap.h
IntEqClasses.h
IntervalMap.h [C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr. 2014-04-14 00:51:57 +00:00
IntrusiveRefCntPtr.h Remove IntrusiveRefCntPtr::getPtr() function 2014-07-05 22:20:59 +00:00
iterator_range.h Simplify make_range by using move semantics 2014-04-10 22:03:48 +00:00
iterator.h [ADT] Provide some helpful static_asserts for using operations of the 2014-04-30 00:49:32 +00:00
MapVector.h ADT: Add MapVector::remove_if 2014-07-15 20:24:56 +00:00
None.h Correct spelling of 'enumerator'. 2013-02-21 06:08:22 +00:00
Optional.h [C++11] Remove the R-value reference #if usage from the ADT and Support 2014-03-01 09:27:28 +00:00
PackedVector.h
PointerIntPair.h PointerIntPair: Avoid an (academic) case of undefined behavior in the DenseMapInfo specialization. 2014-03-15 18:10:49 +00:00
PointerUnion.h [ADT] Teach PointerUnion to support assignment directly from nullptr to 2014-04-29 00:14:27 +00:00
PostOrderIterator.h [C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr. 2014-04-14 00:51:57 +00:00
PriorityQueue.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
SCCIterator.h SCC: Use the reference typedef 2014-04-25 20:52:08 +00:00
ScopedHashTable.h Reverting size_type for the containers from size_type to unsigned. 2014-06-20 12:20:56 +00:00
SetOperations.h
SetVector.h [C++11] Remove the completely unnecessary requirement on SetVector's 2014-03-03 19:28:52 +00:00
SmallBitVector.h Code in LoopStrengthReduce.cpp depends on SmallBitVector::size() being size_t 2014-06-20 12:57:44 +00:00
SmallPtrSet.h Reverting size_type for the containers from size_type to unsigned. 2014-06-20 12:20:56 +00:00
SmallSet.h The count() function for STL datatypes returns unsigned, even where it's 2014-06-20 10:26:56 +00:00
SmallString.h Revert "Clean up SmallString a bit" 2014-03-09 06:22:58 +00:00
SmallVector.h SmallVector: support resize(N) with move-only types 2014-06-09 22:26:20 +00:00
SparseBitVector.h Reverting size_type for the containers from size_type to unsigned. 2014-06-20 12:20:56 +00:00
SparseMultiSet.h Reverting size_type for the containers from size_type to unsigned. 2014-06-20 12:20:56 +00:00
SparseSet.h Reverting size_type for the containers from size_type to unsigned. 2014-06-20 12:20:56 +00:00
Statistic.h Use 'false' for a bool instead of '0' 2014-04-07 06:59:39 +00:00
STLExtras.h Attempt to placate compilers that warn on casts between pointer-to-object and 2014-05-23 01:22:46 +00:00
StringExtras.h ADT: Surface LowerCase argument for utohexstr 2014-07-14 21:56:54 +00:00
StringMap.h Recommit 211309 (StringMap::insert), reverted in 211328 due to issues with private, but non-deleted, move members. 2014-06-23 18:28:53 +00:00
StringRef.h Make the copy member of StringRef/ArrayRef generic wrt allocators. 2014-04-18 16:36:15 +00:00
StringSet.h [ADT] Fix StringSet::insert() to not allocate on every lookup. 2013-03-15 20:16:59 +00:00
StringSwitch.h [C++11] Make use of 'nullptr' in the Support library. 2014-04-07 04:17:22 +00:00
TinyPtrVector.h Add back some typecasts I accidentally lost in r206142. 2014-04-14 01:11:34 +00:00
Triple.h ADT: remove MinGW32 and Cygwin OSType enum 2014-08-09 23:12:20 +00:00
Twine.h [ADT] Delete the Twine assignment operator 2014-05-29 17:12:05 +00:00
UniqueVector.h IR: Add COMDATs to the IR 2014-06-27 18:19:56 +00:00
VariadicFunction.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00