| #
52f24d7a |
| 06-Dec-2011 |
Lang Hames <[email protected]> |
Kill off the LoopSplitter. It's not being used or maintained.
llvm-svn: 145897
|
|
Revision tags: llvmorg-3.0.0, llvmorg-3.0.0-rc4 |
|
| #
4784df71 |
| 13-Nov-2011 |
NAKAMURA Takumi <[email protected]> |
Prune more RALinScan. RALinScan was also here!
llvm-svn: 144487
|
|
Revision tags: llvmorg-3.0.0-rc3 |
|
| #
ae4e800c |
| 02-Nov-2011 |
Chandler Carruth <[email protected]> |
Begin collecting some of the statistics for block placement discussed on the mailing list. Suggestions for other statistics to collect would be awesome. =]
Currently these are implemented as a separ
Begin collecting some of the statistics for block placement discussed on the mailing list. Suggestions for other statistics to collect would be awesome. =]
Currently these are implemented as a separate pass guarded by a separate flag. I'm not thrilled by that, but I wanted to be able to collect the statistics for the old code placement as well as the new in order to have a point of comparison. I'm planning on folding them into the single pass if / when there is only one pass of interest.
llvm-svn: 143537
show more ...
|
|
Revision tags: llvmorg-3.0.0-rc2 |
|
| #
10281425 |
| 21-Oct-2011 |
Chandler Carruth <[email protected]> |
Implement a block placement pass based on the branch probability and block frequency analyses. This differs substantially from the existing block-placement pass in LLVM:
1) It operates on the Machin
Implement a block placement pass based on the branch probability and block frequency analyses. This differs substantially from the existing block-placement pass in LLVM:
1) It operates on the Machine-IR in the CodeGen layer. This exposes much more (and more precise) information and opportunities. Also, the results are more stable due to fewer transforms ocurring after the pass runs. 2) It uses the generalized probability and frequency analyses. These can model static heuristics, code annotation derived heuristics as well as eventual profile loading. By basing the optimization on the analysis interface it can work from any (or a combination) of these inputs. 3) It uses a more aggressive algorithm, both building chains from tho bottom up to maximize benefit, and using an SCC-based walk to layout chains of blocks in a profitable ordering without O(N^2) iterations which the old pass involves.
The pass is currently gated behind a flag, and not enabled by default because it still needs to grow some important features. Most notably, it needs to support loop aligning and careful layout of loop structures much as done by hand currently in CodePlacementOpt. Once it supports these, and has sufficient testing and quality tuning, it should replace both of these passes.
Thanks to Nick Lewycky and Richard Smith for help authoring & debugging this, and to Jakob, Andy, Eric, Jim, and probably a few others I'm forgetting for reviewing and answering all my questions. Writing a backend pass is *sooo* much better now than it used to be. =D
llvm-svn: 142641
show more ...
|
|
Revision tags: llvmorg-3.0.0-rc1 |
|
| #
875ebd5f |
| 25-Jul-2011 |
Jakub Staszak <[email protected]> |
Rename BlockFrequency to BlockFrequencyInfo and MachineBlockFrequency to MachineBlockFrequencyInfo.
llvm-svn: 135937
|
| #
b7d00313 |
| 27-Jun-2011 |
Evan Cheng <[email protected]> |
Remove the experimental (and unused) pre-ra splitting pass. Greedy regalloc can split live ranges.
llvm-svn: 133962
|
| #
676c405a |
| 26-Jun-2011 |
Rafael Espindola <[email protected]> |
There is only one register coalescer. Merge it into the base class and remove the analysis group.
llvm-svn: 133899
|
|
Revision tags: llvmorg-2.9.0, llvmorg-2.9.0-rc3, llvmorg-2.9.0-rc2, llvmorg-2.9.0-rc1 |
|
| #
d4900a64 |
| 30-Nov-2010 |
Jakob Stoklund Olesen <[email protected]> |
Stub out a new LiveDebugVariables pass.
This analysis is going to run immediately after LiveIntervals. It will stay alive during register allocation and keep track of user variables mentioned in DBG
Stub out a new LiveDebugVariables pass.
This analysis is going to run immediately after LiveIntervals. It will stay alive during register allocation and keep track of user variables mentioned in DBG_VALUE instructions.
When the register allocator is moving values between registers and the stack, it is very hard to keep track of DBG_VALUE instructions. We usually get it wrong. This analysis maintains a data structure that makes it easy to update DBG_VALUE instructions.
llvm-svn: 120385
show more ...
|
| #
6c18d1aa |
| 19-Oct-2010 |
Owen Anderson <[email protected]> |
Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which must be called in the pass's constructor. This function uses static dependency
Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which must be called in the pass's constructor. This function uses static dependency declarations to recursively initialize the pass's dependencies.
Clients that only create passes through the createFooPass() APIs will require no changes. Clients that want to use the CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h before parsing commandline arguments.
I have tested this with all standard configurations of clang and llvm-gcc on Darwin. It is possible that there are problems with the static dependencies that will only be visible with non-standard options. If you encounter any crash in pass registration/creation, please send the testcase to me directly.
llvm-svn: 116820
show more ...
|
| #
80fc0762 |
| 07-Oct-2010 |
Owen Anderson <[email protected]> |
Add initialization routines for CodeGen.
llvm-svn: 115949
|