| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 150566
|
|
|
|
| |
llvm-svn: 150565
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The llc command line options for enabling/disabling passes are local to CodeGen/Passes.cpp. This patch associates those options with standard pass IDs so they work regardless of how the target configures the passes.
A target has two ways of overriding standard passes:
1) Redefine the pass pipeline (override TargetPassConfig::add%Stage)
2) Replace or suppress individiual passes with TargetPassConfig::substitutePass.
In both cases, the command line options associated with the pass override the target default.
For example, say a target wants to disable machine instruction scheduling by default:
- The target calls disablePass(MachineSchedulerID) but otherwise does not override any TargetPassConfig methods.
- Without any llc options, no scheduler is run.
- With -enable-misched, the standard machine scheduler is run and honors the -misched=... flag to select the scheduler variant, which may be used for performance evaluation or testing.
Sorry overridePass is ugly. I haven't thought of a better way without replacing the cl::opt framework. I hope to do that one day...
I haven't figured out why CodeGen uses char& for pass IDs. AnalysisID is much easier to use and less bug prone. I'm using it wherever I can for internal implementation. Maybe later we can change the global pass ID definitions as well.
llvm-svn: 150563
|
|
|
|
|
|
| |
override specific passes.
llvm-svn: 150562
|
|
|
|
|
|
|
|
|
| |
In case the MachineScheduling pass I'm working on doesn't work well
for another target, they can completely override it. This also adds a
hook immediately after the RegAlloc pass to cleanup immediately after
vregs go away. We may want to fold it into the postRA hook later.
llvm-svn: 150298
|
|
|
|
| |
llvm-svn: 150233
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Creates a configurable regalloc pipeline.
Ensure specific llc options do what they say and nothing more: -reglloc=... has no effect other than selecting the allocator pass itself. This patch introduces a new umbrella flag, "-optimize-regalloc", to enable/disable the optimizing regalloc "superpass". This allows for example testing coalscing and scheduling under -O0 or vice-versa.
When a CodeGen pass requires the MachineFunction to have a particular property, we need to explicitly define that property so it can be directly queried rather than naming a specific Pass. For example, to check for SSA, use MRI->isSSA, not addRequired<PHIElimination>.
CodeGen transformation passes are never "required" as an analysis
ProcessImplicitDefs does not require LiveVariables.
We have a plan to massively simplify some of the early passes within the regalloc superpass.
llvm-svn: 150226
|
|
|
|
|
|
|
| |
Split CodeGen into stages.
Distinguish between optimization and correctness.
llvm-svn: 150122
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Moving toward a uniform style of pass definition to allow easier target configuration.
Globally declare Pass ID.
Globally declare pass initializer.
Use INITIALIZE_PASS consistently.
Add a call to the initializer from CodeGen.cpp.
Remove redundant "createPass" functions and "getPassName" methods.
While cleaning up declarations, cleaned up comments (sorry for large diff).
llvm-svn: 150100
|
|
|
|
| |
llvm-svn: 150099
|
|
|
|
| |
llvm-svn: 150097
|
|
|
|
| |
llvm-svn: 150096
|
|
|
|
| |
llvm-svn: 150095
|
|
|
|
| |
llvm-svn: 150093
|
|
|
|
| |
llvm-svn: 150092
|
|
|
|
| |
llvm-svn: 150091
|
|
|
|
|
|
|
|
|
|
| |
Passes prior to instructon selection are now split into separate configurable stages.
Header dependencies are simplified.
The bulk of this diff is simply removal of the silly DisableVerify flags.
Sorry for the target header churn. Attempting to stabilize them.
llvm-svn: 149754
|
|
|
|
| |
llvm-svn: 149753
|
|
|
|
| |
llvm-svn: 149752
|
|
|
|
|
|
|
|
|
| |
RegAllocGreedy has been the default for six months now.
Deleting RegAllocLinearScan makes it possible to also delete
VirtRegRewriter and clean up the spiller code.
llvm-svn: 144475
|
|
|
|
| |
llvm-svn: 130582
|
|
|
|
| |
llvm-svn: 130568
|
|
|
|
|
|
| |
This means that the new register allocator can be used with 'clang -mllvm -regalloc=greedy'.
llvm-svn: 129764
|
|
|
|
|
|
| |
This affects both llvm-gcc and clang.
llvm-svn: 105372
|
|
|
|
|
|
|
|
|
| |
optimization level.
This only really affects llc for now because both the llvm-gcc and clang front
ends override the default register allocator. I intend to remove that code later.
llvm-svn: 104904
|
|
|
|
|
|
| |
Russell Wallace.
llvm-svn: 96580
|
|
|
|
|
|
|
| |
several things that were neither in an anonymous namespace nor static
but not intended to be global.
llvm-svn: 51017
|
|
|
|
| |
llvm-svn: 50696
|
|
|
|
| |
llvm-svn: 45418
|
|
|
|
| |
llvm-svn: 31789
|
|
|
|
| |
llvm-svn: 29489
|
|
|
|
| |
llvm-svn: 29471
|
|
|
|
|
|
|
|
|
|
|
| |
2. Added argument to instruction scheduler creators so the creators can do
special things.
3. Repaired target hazard code.
4. Misc.
More to follow.
llvm-svn: 29450
|
|
|
|
| |
llvm-svn: 29434
|
|
|
|
| |
llvm-svn: 29360
|
|
|
|
| |
llvm-svn: 29220
|
|
|
|
|
|
| |
in the future, remove it.
llvm-svn: 23952
|
|
|
|
| |
llvm-svn: 21420
|
|
|
|
|
|
|
|
| |
Move include/Config and include/Support into include/llvm/Config,
include/llvm/ADT and include/llvm/Support. From here on out, all LLVM
public header files must be under include/llvm/.
llvm-svn: 16137
|
|
|
|
| |
llvm-svn: 15114
|
|
|
|
| |
llvm-svn: 15111
|
|
|
|
| |
llvm-svn: 15108
|
|
|
|
| |
llvm-svn: 15105
|
|
|
|
| |
llvm-svn: 15068
|
|
|
|
| |
llvm-svn: 15067
|
|
|
|
| |
llvm-svn: 14866
|
|
|
|
|
|
| |
CFG in the machine code represenation a global spiller will also be possible. Also document the linear scan register allocator but mark it as experimental for now.
llvm-svn: 12062
|
|
|
|
|
|
| |
minor cleanups
llvm-svn: 10619
|
|
|
|
|
|
| |
most tests under test/Programs/SingleSource/Benchmarks/Shootout so development will continue on trunk. The allocator is not enabled by default. You will need to pass -regallo=linearscan to lli or llc to use it.
llvm-svn: 10103
|
|
|
|
| |
llvm-svn: 9903
|