mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-09-05 17:30:02 +00:00
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
53 lines
932 B
CMake
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
|
|
)
|