llvm-6502/unittests
Jakob Stoklund Olesen 8408edffcb 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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119772 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-19 01:14:40 +00:00
..
ADT Add ADT/IntervalMap. 2010-11-19 01:14:40 +00:00
Analysis Make SCEVUnknown a CallbackVH, so that it can be notified directly 2010-08-02 23:49:30 +00:00
ExecutionEngine missed a use of SizeRequired. 2010-07-22 21:34:55 +00:00
Support Support: Add Endian.h 2010-10-21 20:28:21 +00:00
Transforms Teach this test not to leak. Also, clean up all the cast<BinaryOperator> cruft. 2010-03-13 19:58:26 +00:00
VMCore Revert 119600 to unbreak the build. Francois, please investigate. 2010-11-18 01:38:07 +00:00
CMakeLists.txt Add ADT/IntervalMap. 2010-11-19 01:14:40 +00:00
Makefile Make SCEVUnknown a CallbackVH, so that it can be notified directly 2010-08-02 23:49:30 +00:00
Makefile.unittest This patch enables "make unittests" on enable-shared/mingw. 2010-08-17 19:34:40 +00:00