| Commit message (Collapse) | Author | Age | Files | Lines | 
| ... |  | 
| | 
| 
| 
| 
| 
| 
|  | 
Fix one case we missed to make sure we reserve registers from
allocation.
llvm-svn: 89376
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Add a -linearscan-skip-count argument (default to 0) that tells the
allocator to remember the last N registers it allocated and skip them
when looking for a register candidate.  This tends to spread out
register usage and free up post-allocation scheduling at the cost of
slightly more register pressure.  The primary benefit is the ability
to backschedule reloads.
This is turned off by default.
llvm-svn: 89356
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
LiveIntervals::addIntervalsForSpills.
All spiller calls in RegAllocLinearScan now go through the new Spiller interface.
The "-new-spill-framework" command line option has been removed. To use the trivial in-place spiller you should now pass "-spiller=trivial -rewriter=trivial".
(Note the trivial spiller/rewriter are only meant to serve as examples of the new in-place modification work. Enabling them will yield terrible, though hopefully functional, code).
llvm-svn: 89311
 | 
| | 
| 
| 
| 
| 
|  | 
exception table than DataRel.
llvm-svn: 89279
 | 
| | 
| 
| 
|  | 
llvm-svn: 89275
 | 
| | 
| 
| 
| 
| 
|  | 
Place the EH table in the __TEXT section on MachO. It saves space.
llvm-svn: 89270
 | 
| | 
| 
| 
| 
| 
|  | 
the tail of a block may make that block a new candidate for duplication.
llvm-svn: 89264
 | 
| | 
| 
| 
|  | 
llvm-svn: 89254
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
When TwoAddressInstructionPass deletes a dead instruction, make sure that all
register kills are accounted for. The 2-addr register does not get special
treatment.
llvm-svn: 89246
 | 
| | 
| 
| 
| 
| 
|  | 
Verify LiveVariables information when present.
llvm-svn: 89241
 | 
| | 
| 
| 
|  | 
llvm-svn: 89240
 | 
| | 
| 
| 
| 
| 
|  | 
the recent SlotIndexes work.
llvm-svn: 89238
 | 
| | 
| 
| 
|  | 
llvm-svn: 89225
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
when LiveVariables is available.
The -split-phi-edges is now gone, and so is the hack to disable it when using
the local register allocator. The PHIElimination pass no longer has
LiveVariables as a prerequisite - that is what broke the local allocator.
Instead we do critical edge splitting when possible - that is when
LiveVariables is available.
llvm-svn: 89213
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
contents of the block to be duplicated.  Use this for ARM Cortex A8/9 to
be more aggressive tail duplicating indirect branches, since it makes it
much more likely that they will be predicted in the branch target buffer.
Testcase coming soon.
llvm-svn: 89187
 | 
| | 
| 
| 
|  | 
llvm-svn: 89167
 | 
| | 
| 
| 
|  | 
llvm-svn: 89142
 | 
| | 
| 
| 
|  | 
llvm-svn: 89139
 | 
| | 
| 
| 
|  | 
llvm-svn: 89130
 | 
| | 
| 
| 
|  | 
llvm-svn: 89129
 | 
| | 
| 
| 
| 
| 
| 
|  | 
The local register allocator doesn't like it when LiveVariables is run.
We should also disable edge splitting under -O0, but that has to wait a bit.
llvm-svn: 89125
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
unnecessary.  It is broken because the "isIdenticalTo" check should be
negated.  If that is fixed, this code causes the CodeGen/X86/tail-opts.ll
test to fail, in the dont_merge_oddly function.  And, I confirmed that the
regression is real -- the generated code is worse.  As far as I can tell,
that tail-opts.ll test is checking for what this code is supposed to handle
and we're doing the right thing anyway.
llvm-svn: 89121
 | 
| | 
| 
| 
|  | 
llvm-svn: 89114
 | 
| | 
| 
| 
| 
| 
|  | 
folding optimizations.
llvm-svn: 89109
 | 
| | 
| 
| 
| 
| 
| 
|  | 
It was too difficult to keep the heuristics for merging and duplication
consistent.
llvm-svn: 89105
 | 
| | 
| 
| 
|  | 
llvm-svn: 89082
 | 
| | 
| 
| 
|  | 
llvm-svn: 89075
 | 
| | 
| 
| 
|  | 
llvm-svn: 89066
 | 
| | 
| 
| 
| 
| 
|  | 
more than one place. No intended functionality change.
llvm-svn: 89024
 | 
| | 
| 
| 
|  | 
llvm-svn: 89021
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
unconditional branches or fallthroghes. Instcombine/SimplifyCFG
should be simplifying branches with known conditions.
This fixes some problems caused by these transformations not
updating the MachineBasicBlock CFG.
llvm-svn: 89017
 | 
| | 
| 
| 
| 
| 
|  | 
uninitialized memory.
llvm-svn: 88985
 | 
| | 
| 
| 
|  | 
llvm-svn: 88973
 | 
| | 
| 
| 
|  | 
llvm-svn: 88956
 | 
| | 
| 
| 
|  | 
llvm-svn: 88953
 | 
| | 
| 
| 
|  | 
llvm-svn: 88940
 | 
| | 
| 
| 
|  | 
llvm-svn: 88939
 | 
| | 
| 
| 
|  | 
llvm-svn: 88932
 | 
| | 
| 
| 
|  | 
llvm-svn: 88929
 | 
| | 
| 
| 
|  | 
llvm-svn: 88927
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
Have the asm printer emit a comment if an instruction is a spill or
reload and have the spiller mark copies it introdues so the asm printer
can also annotate those.
llvm-svn: 88911
 | 
| | 
| 
| 
|  | 
llvm-svn: 88899
 | 
| | 
| 
| 
|  | 
llvm-svn: 88895
 | 
| | 
| 
| 
| 
| 
| 
|  | 
Make sure when ProcessImplicitDefs removes a copy which kills its source reg that it
removes the copy from said reg's Kills list.
llvm-svn: 88881
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
determining the PHI-copy insert point.
- Patch by Andrew Canis!
llvm-svn: 88880
 | 
| | 
| 
| 
| 
| 
|  | 
might otherwise lead to miscompilations.
llvm-svn: 88829
 | 
| | 
| 
| 
| 
| 
| 
|  | 
merges, and until then, it's useful to keep the tables separate for ease
of manipulation.
llvm-svn: 88806
 | 
| | 
| 
| 
|  | 
llvm-svn: 88804
 | 
| | 
| 
| 
|  | 
llvm-svn: 88762
 | 
| | 
| 
| 
|  | 
llvm-svn: 88761
 |