| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
| |
When splitting a critical edge, the registers live through the edge are:
- Used in a PHI instruction, or
- Live out from the predecessor, and
- Live in to the successor.
This allows the coalescer to eliminate even more phi joins.
llvm-svn: 89530
|
| |
|
|
| |
llvm-svn: 89522
|
| |
|
|
|
|
|
| |
and stores, handle the case where the element size is not
a valid target type correctly (PPC).
llvm-svn: 89521
|
| |
|
|
|
|
| |
DIEs are created from MDNode, which are already uniqued. And DwarfDebug already uses ValueMaps to find and use existing DIE for a given MDNode.
llvm-svn: 89518
|
| |
|
|
|
|
| |
breaking.
llvm-svn: 89511
|
| |
|
|
| |
llvm-svn: 89510
|
| |
|
|
|
|
| |
and support for blockaddresses in x86-32 PIC mode.
llvm-svn: 89506
|
| |
|
|
|
|
| |
Use ValueMap, instead of std::map.
llvm-svn: 89490
|
| |
|
|
|
|
| |
Make things a little more efficient as suggested by Evan.
llvm-svn: 89489
|
| |
|
|
| |
llvm-svn: 89487
|
| |
|
|
| |
llvm-svn: 89477
|
| |
|
|
|
|
| |
additional, speculative scheduling pass as its cost did not translate into significant performance improvement. Minor tweaks.
llvm-svn: 89471
|
| |
|
|
| |
llvm-svn: 89470
|
| |
|
|
|
|
|
|
| |
which was an expensive checks failure due to a bug in the checking. This
patch in essence reverts the original fix for PR3393, and refixes it by a
tweak to the way expensive checking is done.
llvm-svn: 89454
|
| |
|
|
|
|
| |
tail call has been encountered.
llvm-svn: 89444
|
| |
|
|
|
|
| |
just before codegen.
llvm-svn: 89439
|
| |
|
|
|
|
| |
Fix debug code that assumes getBasicBlock never returns NULL.
llvm-svn: 89428
|
| |
|
|
| |
llvm-svn: 89422
|
| |
|
|
|
|
| |
breaking.
llvm-svn: 89404
|
| |
|
|
|
|
|
|
|
| |
critical edges in PHIElimination.
This has a huge impact on regalloc performance, and we recover almost all of
the 10% compile time regression that edge splitting introduced.
llvm-svn: 89381
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
$ svn merge -c -89279 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r89279 into '.':
U lib/CodeGen/AsmPrinter/DwarfException.cpp
U lib/Target/TargetLoweringObjectFile.cpp
$ svn merge -c -89270 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r89270 into '.':
G lib/CodeGen/AsmPrinter/DwarfException.cpp
G lib/Target/TargetLoweringObjectFile.cpp
llvm-svn: 89379
|
| |
|
|
|
|
|
| |
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
|