mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
[MiSched] Fix a logic error in tryPressure()
Fixes a logic error in the MachineScheduler found by Steve Montgomery (and confirmed by Andy). This has gone unfixed for months because the fix has been found to introduce some small performance regressions. However, Andy has recommended that, at this point, we fix this to avoid further dependence on the incorrect behavior (and then follow-up separately on any regressions), and I agree. Fixes PR18883. llvm-svn: 219512
This commit is contained in:
parent
7c9f20a7a1
commit
8eb3f6d6a0
@ -2495,8 +2495,8 @@ static bool tryPressure(const PressureChange &TryP,
|
|||||||
}
|
}
|
||||||
// If one candidate decreases and the other increases, go with it.
|
// If one candidate decreases and the other increases, go with it.
|
||||||
// Invalid candidates have UnitInc==0.
|
// Invalid candidates have UnitInc==0.
|
||||||
if (tryLess(TryP.getUnitInc() < 0, CandP.getUnitInc() < 0, TryCand, Cand,
|
if (tryGreater(TryP.getUnitInc() < 0, CandP.getUnitInc() < 0, TryCand, Cand,
|
||||||
Reason)) {
|
Reason)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// If the candidates are decreasing pressure, reverse priority.
|
// If the candidates are decreasing pressure, reverse priority.
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
; more complex cases.
|
; more complex cases.
|
||||||
;
|
;
|
||||||
; CHECK: @wrap_mul4
|
; CHECK: @wrap_mul4
|
||||||
; CHECK: 22 regalloc - Number of spills inserted
|
; CHECK: 23 regalloc - Number of spills inserted
|
||||||
|
|
||||||
define void @wrap_mul4(double* nocapture %Out, [4 x double]* nocapture %A, [4 x double]* nocapture %B) #0 {
|
define void @wrap_mul4(double* nocapture %Out, [4 x double]* nocapture %A, [4 x double]* nocapture %B) #0 {
|
||||||
entry:
|
entry:
|
||||||
|
@ -2,10 +2,12 @@
|
|||||||
; Without the last chance recoloring, this test fails with:
|
; Without the last chance recoloring, this test fails with:
|
||||||
; "ran out of registers".
|
; "ran out of registers".
|
||||||
|
|
||||||
; RUN: not llc -regalloc=greedy -relocation-model=pic -lcr-max-depth=0 < %s 2>&1 | FileCheck %s --check-prefix=CHECK-DEPTH
|
; NOTE: With the fix to PR18883, we don't actually run out of registers here
|
||||||
|
; any more, and so those checks are disabled. This test remains only for general coverage.
|
||||||
|
; XXX: not llc -regalloc=greedy -relocation-model=pic -lcr-max-depth=0 < %s 2>&1 | FileCheck %s --check-prefix=CHECK-DEPTH
|
||||||
; Test whether failure due to cutoff for depth is reported
|
; Test whether failure due to cutoff for depth is reported
|
||||||
|
|
||||||
; RUN: not llc -regalloc=greedy -relocation-model=pic -lcr-max-interf=1 < %s 2>&1 | FileCheck %s --check-prefix=CHECK-INTERF
|
; XXX: not llc -regalloc=greedy -relocation-model=pic -lcr-max-interf=1 < %s 2>&1 | FileCheck %s --check-prefix=CHECK-INTERF
|
||||||
; Test whether failure due to cutoff for interference is reported
|
; Test whether failure due to cutoff for interference is reported
|
||||||
|
|
||||||
; RUN: llc -regalloc=greedy -relocation-model=pic -lcr-max-interf=1 -lcr-max-depth=0 -exhaustive-register-search < %s > %t 2>&1
|
; RUN: llc -regalloc=greedy -relocation-model=pic -lcr-max-interf=1 -lcr-max-depth=0 -exhaustive-register-search < %s > %t 2>&1
|
||||||
|
Loading…
Reference in New Issue
Block a user