diff options
| author | Evan Cheng <evan.cheng@apple.com> | 2008-10-23 20:43:13 +0000 |
|---|---|---|
| committer | Evan Cheng <evan.cheng@apple.com> | 2008-10-23 20:43:13 +0000 |
| commit | f5cd4f0d70f2da83626cb1eeefe4ae10382c584d (patch) | |
| tree | 414f7479158490f524dc5695f586e3346f7c11ab /lib/CodeGen/RegAllocLinearScan.cpp | |
| parent | 639076fb84ab02e75d39415bd426a6a576ddef62 (diff) | |
Committing a good chunk of the pre-register allocation live interval splitting pass. It's handling simple cases and appear to do good things. Next: avoid splitting an interval multiple times; renumber registers when possible; record stack slot live intervals for coloring; rematerialize defs when possible.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58044 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/RegAllocLinearScan.cpp')
| -rw-r--r-- | lib/CodeGen/RegAllocLinearScan.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/CodeGen/RegAllocLinearScan.cpp b/lib/CodeGen/RegAllocLinearScan.cpp index ede387e7b7..c382a4a33f 100644 --- a/lib/CodeGen/RegAllocLinearScan.cpp +++ b/lib/CodeGen/RegAllocLinearScan.cpp @@ -49,6 +49,11 @@ NewHeuristic("new-spilling-heuristic", cl::desc("Use new spilling heuristic"), cl::init(false), cl::Hidden); +static cl::opt<bool> +PreSplitIntervals("pre-alloc-split", + cl::desc("Pre-register allocation live interval splitting"), + cl::init(false), cl::Hidden); + static RegisterRegAlloc linearscanRegAlloc("linearscan", "linear scan register allocator", createLinearScanRegisterAllocator); @@ -113,6 +118,8 @@ namespace { // Make sure PassManager knows which analyses to make available // to coalescing and which analyses coalescing invalidates. AU.addRequiredTransitive<RegisterCoalescer>(); + if (PreSplitIntervals) + AU.addRequiredID(PreAllocSplittingID); AU.addRequired<LiveStacks>(); AU.addPreserved<LiveStacks>(); AU.addRequired<MachineLoopInfo>(); |
