llvm-6502/include/llvm
Jakob Stoklund Olesen 8408edffcb 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@119772 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-19 01:14:40 +00:00
..
ADT Add ADT/IntervalMap. 2010-11-19 01:14:40 +00:00
Analysis Factor code for testing whether replacing one value with another 2010-11-18 19:59:41 +00:00
Assembly
Bitcode
CodeGen Rename ExpandPseudos to ExpandISelPseudos to help clarify its role. 2010-11-18 18:45:06 +00:00
CompilerDriver
Config
ExecutionEngine MCJIT: Stub out MCJIT implementation, still doesn't do anything useful. 2010-11-17 16:06:43 +00:00
MC Change CodeGen to use .loc directives. This produces a lot more readable output 2010-11-18 02:04:25 +00:00
Object Object: Get rid of sys::Path, Triple, and cleanup namespace. 2010-11-16 01:06:51 +00:00
Support patch from Frits van Bommel: 2010-11-18 02:15:42 +00:00
System Fix typo: Exectuable -> Executable 2010-11-17 00:43:43 +00:00
Target Move getInitialFrameState() to TargetFrameInfo 2010-11-18 23:25:52 +00:00
Transforms Let the -inline-threshold command line argument take precedence over the 2010-11-02 23:40:26 +00:00
AbstractTypeUser.h
Argument.h
Attributes.h Add a new 'hotpatch' attribute. This attribute will insert a two-byte no-op 2010-10-25 15:37:09 +00:00
AutoUpgrade.h
BasicBlock.h
CallGraphSCCPass.h
CallingConv.h
CMakeLists.txt
Constant.h
Constants.h
DerivedTypes.h
Function.h
GlobalAlias.h
GlobalValue.h
GlobalVariable.h
GVMaterializer.h
InitializePasses.h Rename ExpandPseudos to ExpandISelPseudos to help clarify its role. 2010-11-18 18:45:06 +00:00
InlineAsm.h Mult-alt constraint incremental development step 3. 2010-10-29 23:37:38 +00:00
InstrTypes.h
Instruction.def
Instruction.h
Instructions.h fix PR8613 - Copy constructor of SwitchInst does not call SwitchInst::init 2010-11-17 05:41:46 +00:00
IntrinsicInst.h
Intrinsics.h
Intrinsics.td
IntrinsicsAlpha.td
IntrinsicsARM.td
IntrinsicsCellSPU.td
IntrinsicsPowerPC.td
IntrinsicsX86.td
IntrinsicsXCore.td
LinkAllPasses.h
LinkAllVMCore.h
Linker.h
LLVMContext.h now that AsmPrinter::EmitInlineAsm is factored right, we can eliminate the 2010-11-17 08:13:01 +00:00
Metadata.h
Module.h
OperandTraits.h
Operator.h
Pass.h
PassAnalysisSupport.h
PassManager.h
PassManagers.h
PassRegistry.h
PassSupport.h
SymbolTableListTraits.h
Type.h
TypeSymbolTable.h
Use.h
User.h
Value.h Factor out Instruction::isSafeToSpeculativelyExecute's code for 2010-11-11 21:23:25 +00:00
ValueSymbolTable.h