llvm-6502/include/llvm/ADT
Ted Kremenek 75627d3d2e Performance optimization on ImmutableMap/ImmutableSet:
- Use a DenseSet instead of a FoldingSet to cache
canonicalized nodes.  This reduces the overhead
of double-hashing.

- Use reference counts in ImutAVLTree to much
more aggressively recover tree nodes that are
no longer usable.  We can generate many
transient nodes while using add() and remove()
on ImmutableSet/ImmutableMaps to generate a final
set/map.

For the clang static analyzer (the main client
of these data structures), this results in
a slight speedup (0.5%) when analyzing sqlite3,
but much more importantly results in a 30-60%
reduction in peak memory usage when the analyzer
is analyzing a given function in a file.  On
average that's about a ** 44% reduction ** in the
memory footprint of the static analyzer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120459 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-30 20:26:45 +00:00
..
APFloat.h Don't pass StringRef by reference. 2010-07-14 22:38:02 +00:00
APInt.h PR5207: Make APInt::set(), APInt::clear() and APInt::flip() return void. 2010-11-30 09:02:01 +00:00
APSInt.h
BitVector.h BitVector tweaks. 2010-11-26 18:25:20 +00:00
DAGDeltaAlgorithm.h Fix a gcc warning: 2010-06-09 03:00:05 +00:00
DeltaAlgorithm.h Fix comment. 2010-02-17 19:26:45 +00:00
DenseMap.h Make the iterator form of erase return void, since it always succeeds, 2010-09-01 14:00:35 +00:00
DenseMapInfo.h Add a specialization for 'long', a hole in the set of fundamental 2010-10-31 22:57:03 +00:00
DenseSet.h Make the iterator form of erase return void, since it always succeeds, 2010-09-01 14:00:35 +00:00
DepthFirstIterator.h Revert r111394. It was too aggressive. 2010-08-18 20:06:05 +00:00
EquivalenceClasses.h Merge System into Support. 2010-11-29 18:16:10 +00:00
FoldingSet.h Merge System into Support. 2010-11-29 18:16:10 +00:00
GraphTraits.h
ilist_node.h Fix const ilist_node::get{Prev,Next}Node() to actually compile. Picky, picky. 2010-05-13 18:35:02 +00:00
ilist.h Delete an unused declaration. 2010-08-29 14:48:15 +00:00
ImmutableIntervalMap.h Tweak ImmutableMap/ImmutableSet/ImmutableList APIs 2010-11-24 00:54:28 +00:00
ImmutableList.h Merge System into Support. 2010-11-29 18:16:10 +00:00
ImmutableMap.h Performance optimization on ImmutableMap/ImmutableSet: 2010-11-30 20:26:45 +00:00
ImmutableSet.h Performance optimization on ImmutableMap/ImmutableSet: 2010-11-30 20:26:45 +00:00
IndexedMap.h
InMemoryStruct.h ADT/InMemoryStruct: Add an experimental helper class intended for use in 2010-11-27 08:11:02 +00:00
IntervalMap.h Don't use std::copy and std::copy_backward, run 10% faster. 2010-11-28 22:17:14 +00:00
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 Move 'Optional' class from Clang to LLVM/ADT. 2010-04-09 20:25:54 +00:00
OwningPtr.h Remove MaybeOwningPtr. We're going to use reference-counting instead. 2010-04-05 23:53:46 +00:00
PointerIntPair.h Remove isPod() from DenseMapInfo, splitting it out to its own 2009-12-15 07:26:43 +00:00
PointerUnion.h Change PointerUnionX::getFromOpaqueValue() to be declared 'static inline' instead of 'static'. 2010-03-30 16:20:03 +00:00
PostOrderIterator.h Use std::vector rather than SmallVector here because SmallVector 2010-07-08 13:06:08 +00:00
PriorityQueue.h
SCCIterator.h reenable r101565, removing a problematic assertion. 2010-04-17 07:17:19 +00:00
ScopedHashTable.h make lookup failures not fatal. 2010-07-27 18:59:50 +00:00
SetOperations.h
SetVector.h Make SetVector's remove indicate whether it actually removed something. 2010-09-22 23:20:04 +00:00
SmallBitVector.h Add an all() method to BitVector, for testing whether all bits are set. 2010-09-27 15:48:37 +00:00
SmallPtrSet.h Merge System into Support. 2010-11-29 18:16:10 +00:00
SmallSet.h
SmallString.h
SmallVector.h Fix spelling! 2010-11-26 04:16:20 +00:00
SparseBitVector.h Merge System into Support. 2010-11-29 18:16:10 +00:00
Statistic.h Merge System into Support. 2010-11-29 18:16:10 +00:00
STLExtras.h Kill a couple of unused variables. 2010-08-30 18:31:44 +00:00
StringExtras.h Merge System into Support. 2010-11-29 18:16:10 +00:00
StringMap.h Test commit: Fix two -Asserts mode warnings in StringMap.h. 2010-11-20 18:37:24 +00:00
StringRef.h StringRefs are POD-like. 2010-11-26 14:36:54 +00:00
StringSet.h modernize stringset interface 2010-07-23 03:21:53 +00:00
StringSwitch.h Finish full attribute class emission for clang. 2010-08-18 23:23:09 +00:00
Trie.h
Triple.h Remove PIC16 remnants. 2010-11-27 18:20:30 +00:00
Twine.h Merge System into Support. 2010-11-29 18:16:10 +00:00
UniqueVector.h
ValueMap.h Merge System into Support. 2010-11-29 18:16:10 +00:00
VectorExtras.h