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 | d0d0317b9a9ff9d969f46ba88d1cee8bf57df244 (patch) | |
| tree | eba25dd11fc5c4fe2944b94b34bc9d45596c9b13 /llvm/lib/CodeGen/RegAllocLinearScan.cpp | |
| parent | e395d7865770e255e67c39a3ded2b7bfac0b7caf (diff) | |
| download | bcm5719-llvm-d0d0317b9a9ff9d969f46ba88d1cee8bf57df244.tar.gz bcm5719-llvm-d0d0317b9a9ff9d969f46ba88d1cee8bf57df244.zip | |
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.
llvm-svn: 58044
Diffstat (limited to 'llvm/lib/CodeGen/RegAllocLinearScan.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/RegAllocLinearScan.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/RegAllocLinearScan.cpp b/llvm/lib/CodeGen/RegAllocLinearScan.cpp index ede387e7b79..c382a4a33fb 100644 --- a/llvm/lib/CodeGen/RegAllocLinearScan.cpp +++ b/llvm/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>(); |

