diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-11-19 04:47:19 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-11-19 04:47:19 +0000 |
commit | 345945e355cf8415b936e2d7b22236bc2269adb7 (patch) | |
tree | 1235f67dcc395a198a13f00f4f0c2c78a6e5ef83 /llvm/unittests/CMakeLists.txt | |
parent | 35f1a0d58d0943fbcc8cff1a28b00703737f1f60 (diff) | |
download | bcm5719-llvm-345945e355cf8415b936e2d7b22236bc2269adb7.tar.gz bcm5719-llvm-345945e355cf8415b936e2d7b22236bc2269adb7.zip |
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
Diffstat (limited to 'llvm/unittests/CMakeLists.txt')
-rw-r--r-- | llvm/unittests/CMakeLists.txt | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/llvm/unittests/CMakeLists.txt b/llvm/unittests/CMakeLists.txt index fda18752416..eaecc9cc0ba 100644 --- a/llvm/unittests/CMakeLists.txt +++ b/llvm/unittests/CMakeLists.txt @@ -45,6 +45,7 @@ add_llvm_unittest(ADT ADT/DenseSetTest.cpp ADT/ilistTest.cpp ADT/ImmutableSetTest.cpp + ADT/IntervalMapTest.cpp ADT/SmallBitVectorTest.cpp ADT/SmallStringTest.cpp ADT/SmallVectorTest.cpp |