llvm-6502/lib/Support/CMakeLists.txt
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

53 lines
932 B
CMake

## FIXME: This only requires RTTI because tblgen uses it. Fix that.
set(LLVM_REQUIRES_RTTI 1)
add_llvm_library(LLVMSupport
APFloat.cpp
APInt.cpp
APSInt.cpp
Allocator.cpp
circular_raw_ostream.cpp
CommandLine.cpp
ConstantRange.cpp
CrashRecoveryContext.cpp
Debug.cpp
DeltaAlgorithm.cpp
DAGDeltaAlgorithm.cpp
Dwarf.cpp
ErrorHandling.cpp
FileUtilities.cpp
FoldingSet.cpp
FormattedStream.cpp
GraphWriter.cpp
IntervalMap.cpp
IsInf.cpp
IsNAN.cpp
ManagedStatic.cpp
MemoryBuffer.cpp
MemoryObject.cpp
PluginLoader.cpp
PrettyStackTrace.cpp
Regex.cpp
SmallPtrSet.cpp
SmallVector.cpp
SourceMgr.cpp
Statistic.cpp
StringExtras.cpp
StringMap.cpp
StringPool.cpp
StringRef.cpp
SystemUtils.cpp
TargetRegistry.cpp
Timer.cpp
ToolOutputFile.cpp
Triple.cpp
Twine.cpp
raw_os_ostream.cpp
raw_ostream.cpp
regcomp.c
regerror.c
regexec.c
regfree.c
regstrlcpy.c
)