1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 11:42:57 +01:00
llvm-mirror/include/llvm/ADT
Jakob Stoklund Olesen 52d6dd3079 Add ADT/IntervalMap.
This is a sorted interval map data structure for small keys and values with
automatic coalescing and bidirectional iteration over coalesced intervals.

Except for coalescing intervals, it provides similar functionality to std::map.
It is however much more compact for small keys and values, and hopefully faster
too.

The container object itself can hold the first few intervals without any
allocations, then it switches to a cache conscious B+-tree representation. A
recycling allocator can be shared between many containers, even between
containers holding different types.

The IntervalMap is initially intended to be used with SlotIndex intervals for:

- Backing store for LiveIntervalUnion that is smaller and faster than std::set.

- Backing store for LiveInterval with less overhead than std::vector for typical
  intervals and O(N log N) merging of large intervals. 99% of virtual registers
  need 4 entries or less and would benefit from the small object optimization.

- Backing store for LiveDebugVariable which doesn't exist yet, but will track
  debug variables during register allocation.

This is a work in progress. Missing items are:

- Performance metrics.
- erase().
- insert() shrinkage.
- clear().
- More performance metrics.
- Simplification and detemplatization.

llvm-svn: 119787
2010-11-19 04:47:19 +00:00
..
APFloat.h
APInt.h Factor code out of APInt to form a isUIntN helper function. 2010-11-03 00:38:40 +00:00
APSInt.h
BitVector.h Add an all() method to BitVector, for testing whether all bits are set. 2010-09-27 15:48:37 +00:00
DAGDeltaAlgorithm.h
DeltaAlgorithm.h
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
FoldingSet.h Add hooks to FoldingSetTrait to allow specializations to provide 2010-08-16 15:30:39 +00:00
GraphTraits.h
ilist_node.h
ilist.h Delete an unused declaration. 2010-08-29 14:48:15 +00:00
ImmutableIntervalMap.h Change the Interval type to signed in ImmutableIntervalMap.h. 2010-08-09 03:43:39 +00:00
ImmutableList.h
ImmutableMap.h
ImmutableSet.h Fix warnings about missing parents between || and &&. 2010-11-17 02:40:30 +00:00
IndexedMap.h
IntervalMap.h Add ADT/IntervalMap. 2010-11-19 04:47:19 +00:00
IntrusiveRefCntPtr.h
NullablePtr.h
Optional.h
OwningPtr.h
PointerIntPair.h
PointerUnion.h
PostOrderIterator.h
PriorityQueue.h
SCCIterator.h
ScopedHashTable.h
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
SmallSet.h
SmallString.h
SmallVector.h GCC extensions are no longer used here - update the comment. 2010-10-03 15:31:50 +00:00
SparseBitVector.h
Statistic.h
STLExtras.h Kill a couple of unused variables. 2010-08-30 18:31:44 +00:00
StringExtras.h
StringMap.h Rename alignof -> alignOf to avoid irritating C++'0x compilers, 2010-10-30 05:14:01 +00:00
StringRef.h Extend StringRef's edit-distance algorithm to permit an upper bound on the allowed edit distance 2010-10-19 22:13:48 +00:00
StringSet.h
StringSwitch.h Finish full attribute class emission for clang. 2010-08-18 23:23:09 +00:00
Trie.h
Triple.h Trailing whitespace. 2010-11-13 04:17:15 +00:00
Twine.h
UniqueVector.h
ValueMap.h Make the iterator form of erase return void, since it always succeeds, 2010-09-01 14:00:35 +00:00
VectorExtras.h