llvm-6502/lib/Support
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
..
Allocator.cpp Grow BumpPtrAllocator's slab size dynamically if we allocated many slabs. This 2010-09-30 16:18:28 +00:00
APFloat.cpp Do not assert when reading an exponent out of range. 2010-08-19 17:58:35 +00:00
APInt.cpp Bounds-check APInt's operator[]. 2010-11-18 17:14:56 +00:00
APSInt.cpp
circular_raw_ostream.cpp clean this up, fix std::min ambiguity on some platforms. 2010-04-09 20:43:54 +00:00
CMakeLists.txt Add ADT/IntervalMap. 2010-11-19 04:47:19 +00:00
CommandLine.cpp Add new configure option, --disable-timestamps, intended to turn off anything which would mess up binary/object comparisons. Currently: 2010-05-10 20:11:56 +00:00
ConstantRange.cpp Make ConstantRange::makeICmpRegion handle all the edge cases properly. This 2010-09-28 18:18:36 +00:00
COPYRIGHT.regex
CrashRecoveryContext.cpp CrashRecoveryContext: Add RunSafelyOnThread helper function. 2010-11-05 07:19:09 +00:00
DAGDeltaAlgorithm.cpp Use const_iterator where appropriate. 2010-06-08 17:21:57 +00:00
Debug.cpp Fix a bunch of namespace polution. 2010-04-15 17:08:50 +00:00
DeltaAlgorithm.cpp DeltaAlgorithm: Tweak split to split by first/second half instead of even/odd, since adjacent changes are more likely to be related. 2010-06-08 16:21:26 +00:00
Dwarf.cpp Add the entire range of DW_OP_lit[0..31], DW_OP_reg[0..31], and 2010-06-17 01:23:24 +00:00
ErrorHandling.cpp report_fatal_error: Simplify a possible ambiguity. 2010-11-13 02:48:51 +00:00
FileUtilities.cpp fpcmp: Fix bug where fpcmp wouldn't early exit when files obviously differ and 2010-06-15 19:20:30 +00:00
FoldingSet.cpp Aligned and unaligned copies of the same string 2010-11-19 00:48:58 +00:00
FormattedStream.cpp Make tool_output_file's raw_ostream instance a member variable instead 2010-09-01 14:20:41 +00:00
GraphWriter.cpp Fix these error messages to be less confusing. These error 2010-10-29 17:03:40 +00:00
IntervalMap.cpp Add ADT/IntervalMap. 2010-11-19 04:47:19 +00:00
IsInf.cpp
IsNAN.cpp
Makefile
ManagedStatic.cpp
MemoryBuffer.cpp Rewrite MemoryBuffer::getSTDIN to use read(2) and a SmallVector buffer. 2010-06-25 16:07:18 +00:00
MemoryObject.cpp
PluginLoader.cpp
PrettyStackTrace.cpp Fix a couple of warnings. 2010-08-08 00:00:34 +00:00
raw_os_ostream.cpp
raw_ostream.cpp lib/Support/raw_ostream.cpp: Fix Cygwin's build. 2010-10-19 01:21:55 +00:00
regcclass.h
regcname.h
regcomp.c
regengine.inc
regerror.c
regex2.h
regex_impl.h
Regex.cpp Don't pass StringRef by reference. 2010-07-14 22:38:02 +00:00
regexec.c
regfree.c
regstrlcpy.c
regutils.h
SmallPtrSet.cpp Rather than giving SmallPtrSetImpl a member field SmallArray which is magically 2010-06-30 15:02:37 +00:00
SmallVector.cpp After some discussion with djg, teach SmallVector to grow from a zero 2010-09-02 21:55:03 +00:00
SourceMgr.cpp now that AsmPrinter::EmitInlineAsm is factored right, we can eliminate the 2010-11-17 08:13:01 +00:00
Statistic.cpp remove trailing whitespace 2010-08-17 17:37:22 +00:00
StringExtras.cpp
StringMap.cpp
StringPool.cpp Don't pass StringRef by reference. 2010-07-14 22:38:02 +00:00
StringRef.cpp Fix memory leak in StringRef::edit_distance(). 'Allocated' could be leaked on an early return. 2010-11-07 06:09:02 +00:00
SystemUtils.cpp Rename FindExecutable to PrependMainExecutablePath. 2010-11-03 16:14:16 +00:00
TargetRegistry.cpp
Timer.cpp Roll back my last two commits, valgrind complains. 2010-08-07 13:27:41 +00:00
ToolOutputFile.cpp Move tool_output_file into its own file. 2010-10-07 20:32:40 +00:00
Triple.cpp Add better support for environment portion of triple. Original patch by 2010-09-16 08:25:48 +00:00
Twine.cpp Implement rdar://7415680 - Twine integer support lacks greatness 2010-05-05 18:40:33 +00:00