llvm-6502/lib
Jakob Stoklund Olesen 8dc926755f 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@119787 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-19 04:47:19 +00:00
..
Analysis Factor code for testing whether replacing one value with another 2010-11-18 19:59:41 +00:00
Archive Revert "CMake: Get rid of LLVMLibDeps.cmake and export the libraries normally." 2010-09-13 23:59:48 +00:00
AsmParser Add a new 'hotpatch' attribute. This attribute will insert a two-byte no-op 2010-10-25 15:37:09 +00:00
Bitcode Fix PR8494: when reading invalid bitcode, getTypeByID may return 2010-10-28 15:47:26 +00:00
CodeGen Change some methods in MCDwarf.cpp to be able to handle an arbitrary 2010-11-19 02:26:16 +00:00
CompilerDriver Rename FindExecutable to PrependMainExecutablePath. 2010-11-03 16:14:16 +00:00
ExecutionEngine Move getInitialFrameState() to TargetFrameInfo 2010-11-18 23:25:52 +00:00
Linker GetDLLSuffix: Remove the leading dot from LTDL_SHLIB_EXT. 2010-11-02 20:32:59 +00:00
MC Fix llvm-gcc boostrap on OS X by avoiding printing sleb and uleb when 2010-11-19 04:10:13 +00:00
Object Fix typo: Exectuable -> Executable 2010-11-17 00:43:43 +00:00
Support Add ADT/IntervalMap. 2010-11-19 04:47:19 +00:00
System Use thread-safe statics to avoid a static constructor here. This isn't thread-safe on MSVC, but we don't 2010-11-18 18:49:05 +00:00
Target Change some methods in MCDwarf.cpp to be able to handle an arbitrary 2010-11-19 02:26:16 +00:00
Transforms Factor code for testing whether replacing one value with another 2010-11-18 19:59:41 +00:00
VMCore Fix an order-of-deallocation issue where the AttrListImpl could be deallocated before the global 2010-11-18 18:59:13 +00:00
Makefile Add LLVMObject Library. 2010-11-15 03:21:41 +00:00