diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-01-06 01:21:53 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-01-06 01:21:53 +0000 |
commit | 8bfe50871f9cb1b022483e0e1307ab5b8c9e5650 (patch) | |
tree | 7592b8d248dae5cc9576b9d7a315230bccffd99d /include/llvm/CodeGen/Passes.h | |
parent | 05e353c4eda22c99967453029dfa7de276409951 (diff) | |
download | external_llvm-8bfe50871f9cb1b022483e0e1307ab5b8c9e5650.zip external_llvm-8bfe50871f9cb1b022483e0e1307ab5b8c9e5650.tar.gz external_llvm-8bfe50871f9cb1b022483e0e1307ab5b8c9e5650.tar.bz2 |
Add the SpillPlacement analysis pass.
This pass precomputes CFG block frequency information that can be used by the
register allocator to find optimal spill code placement.
Given an interference pattern, placeSpills() will compute which basic blocks
should have the current variable enter or exit in a register, and which blocks
prefer the stack.
The algorithm is ready to consume block frequencies from profiling data, but for
now it gets by with the static estimates used for spill weights.
This is a work in progress and still not hooked up to RegAllocGreedy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122938 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen/Passes.h')
-rw-r--r-- | include/llvm/CodeGen/Passes.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/include/llvm/CodeGen/Passes.h b/include/llvm/CodeGen/Passes.h index 6f53d34..53aee7a 100644 --- a/include/llvm/CodeGen/Passes.h +++ b/include/llvm/CodeGen/Passes.h @@ -88,6 +88,11 @@ namespace llvm { /// register allocators. extern char &TwoAddressInstructionPassID; + /// SpillPlacement analysis. Suggest optimal placement of spill code between + /// basic blocks. + /// + extern char &SpillPlacementID; + /// UnreachableMachineBlockElimination pass - This pass removes unreachable /// machine basic blocks. extern char &UnreachableMachineBlockElimID; |