| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The common code in the post-RA scheduler to break anti-dependencies on the
critical path contained a flaw. In the reported case, an anti-dependency
between the overlapping registers %X4 and %R4 exists:
%X29<def> = OR8 %X4, %X4
%R4<def>, %X3<def,dead,tied3> = LBZU 1, %X3<kill,tied1>
The unpatched code breaks the dependency by replacing %R4 and its uses
with %R3, the first register on the available list. However, %R3 and
%X3 overlap, so this creates two overlapping definitions on the same
instruction.
The fix is straightforward, preventing selection of a register that
overlaps any other defined register on the same instruction.
The test case is reduced from the bug report, and verifies that we no
longer produce "lbzu 3, 1(3)" when breaking this anti-dependency.
llvm-svn: 173706
|
|
|
|
|
|
|
|
|
|
| |
missed in the first pass because the script didn't yet handle include
guards.
Note that the script is now able to handle all of these headers without
manual edits. =]
llvm-svn: 169224
|
|
|
|
|
|
| |
Allow targets to access this API. It's required for RegisterPressure.
llvm-svn: 158102
|
|
|
|
| |
llvm-svn: 152999
|
|
|
|
|
|
| |
No functional change was intended.
llvm-svn: 133202
|
|
|
|
| |
llvm-svn: 132487
|
|
|
|
| |
llvm-svn: 125232
|
|
|
|
|
|
|
|
| |
Avoid using the same register for two def operands or and earlyclobber
def and use operand. This fixes PR8986 and improves on the prior fix
for rdar://problem/8959122.
llvm-svn: 125089
|
|
|
|
|
|
|
| |
breaker needs to check all definitions of the antidepenent register to
avoid multiple defs of the same new register.
llvm-svn: 118032
|
|
|
|
|
|
| |
make sure to allocate enough space in the std::vector.
llvm-svn: 108449
|
|
|
|
| |
llvm-svn: 108419
|
|
|
|
|
|
| |
get *very* large, but we only need it to be the size of thenumber of pregs.
llvm-svn: 108411
|
|
|
|
|
|
| |
(conservatively) aware of predicated instructions. This enables ARM to move if-conversion before post-ra scheduler.
llvm-svn: 106091
|
|
|
|
|
|
| |
and End arguments by-value rather than by-reference.
llvm-svn: 101830
|
|
|
|
|
|
| |
multiple register definitions.
llvm-svn: 92864
|
|
|
|
| |
llvm-svn: 92837
|
|
|
|
|
|
| |
additional, speculative scheduling pass as its cost did not translate into significant performance improvement. Minor tweaks.
llvm-svn: 89471
|
|
|
|
|
|
| |
registers that should be renamed.
llvm-svn: 85939
|
|
|
|
| |
llvm-svn: 85412
|
|
|
|
|
|
| |
times. This is necessary because new anti-dependencies are exposed when "current" ones are broken.
llvm-svn: 85166
|
|
llvm-svn: 85127
|