llvm-6502/include/llvm/ADT
Duncan Sands bcc2393369 Fix the ValueMap copy constructor. The issue is that the map keys are value
handles with a pointer to the containing map.  When a map is copied, these
pointers need to be corrected to point to the new map.  If not, then consider
the case of a map M1 which maps a value V to something.  Create a copy M2 of
M1.  At this point there are two value handles on V, one representing V as a
key in M1, the other representing V as a key in M2.  But both value handles
point to M1 as the containing map.  Now delete V.  The value handles remove
themselves from their containing map (which destroys them), but only the first
value handle is successful: the second one cannot remove itself from M1 as
(once the first one has removed itself) there is nothing there to remove; it
is therefore not destroyed.  This causes an assertion failure "All references
to V were not removed?".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109851 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-30 05:49:32 +00:00
..
APFloat.h Don't pass StringRef by reference. 2010-07-14 22:38:02 +00:00
APInt.h Don't pass StringRef by reference. 2010-07-14 22:38:02 +00:00
APSInt.h
BitVector.h
DAGDeltaAlgorithm.h Fix a gcc warning: 2010-06-09 03:00:05 +00:00
DeltaAlgorithm.h
DenseMap.h Add includes to get ptrdiff_t. This is needed by gcc-4.6 which has 2010-06-10 10:13:58 +00:00
DenseMapInfo.h
DenseSet.h Fill out the interface of DenseSet a bit. 2010-07-27 23:55:47 +00:00
DepthFirstIterator.h
EquivalenceClasses.h getOrInsertLeaderValue cannot be const because it calls insert. 2010-07-12 20:27:02 +00:00
FoldingSet.h Add convenience method FoldingSetImpl::InsertNode(Node *N) that asserts if the node is already inserted. 2010-07-12 20:47:08 +00:00
GraphTraits.h
ilist_node.h
ilist.h Add includes to get ptrdiff_t. This is needed by gcc-4.6 which has 2010-06-10 10:13:58 +00:00
ImmutableIntervalMap.h 80-columns 2010-07-13 05:50:08 +00:00
ImmutableList.h
ImmutableMap.h
ImmutableSet.h
IndexedMap.h
IntrusiveRefCntPtr.h
NullablePtr.h add a new NullablePtr class which makes it more obvious in API 2010-07-24 18:47:46 +00:00
Optional.h
OwningPtr.h
PointerIntPair.h
PointerUnion.h
PostOrderIterator.h Use std::vector rather than SmallVector here because SmallVector 2010-07-08 13:06:08 +00:00
PriorityQueue.h
SCCIterator.h
ScopedHashTable.h make lookup failures not fatal. 2010-07-27 18:59:50 +00:00
SetOperations.h
SetVector.h Implement operator== and operator!= for SetVector. 2010-06-05 00:26:02 +00:00
SmallBitVector.h
SmallPtrSet.h Rename NextPowerOfTwo to RoundUpToPowerOfTwo. 2010-06-30 17:24:28 +00:00
SmallSet.h
SmallString.h
SmallVector.h disable SmallVectorImpl's copy constructor. This prevents a class 2010-06-15 18:59:43 +00:00
SparseBitVector.h
Statistic.h Add a comment about a thread safety issue in Statistic.h. 2010-06-24 16:31:32 +00:00
STLExtras.h
StringExtras.h
StringMap.h give StringMap a new ctor which allows you to initialize it 2010-07-23 03:29:59 +00:00
StringRef.h
StringSet.h modernize stringset interface 2010-07-23 03:21:53 +00:00
StringSwitch.h
Trie.h
Triple.h 80-columns 2010-07-13 05:50:08 +00:00
Twine.h
UniqueVector.h
ValueMap.h Fix the ValueMap copy constructor. The issue is that the map keys are value 2010-07-30 05:49:32 +00:00
VectorExtras.h