diff options
author | dim <dim@FreeBSD.org> | 2016-03-13 18:34:32 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2016-03-13 18:34:32 +0000 |
commit | 71a86ad86f2e278d758caf2f48e47d768c88ca45 (patch) | |
tree | 1b195f9e0e2cdaa71703ca9c5f16bc185ecf9143 /contrib/llvm/patches | |
parent | e5fe1cf6c0803bc71a80074e660e36b7bbfaf2c1 (diff) | |
download | FreeBSD-src-71a86ad86f2e278d758caf2f48e47d768c88ca45.zip FreeBSD-src-71a86ad86f2e278d758caf2f48e47d768c88ca45.tar.gz |
Add patch corresponding to r296800.
Diffstat (limited to 'contrib/llvm/patches')
-rw-r--r-- | contrib/llvm/patches/patch-r296800-llvm-r219512-out-of-registers.diff | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/contrib/llvm/patches/patch-r296800-llvm-r219512-out-of-registers.diff b/contrib/llvm/patches/patch-r296800-llvm-r219512-out-of-registers.diff new file mode 100644 index 0000000..cd64f2f --- /dev/null +++ b/contrib/llvm/patches/patch-r296800-llvm-r219512-out-of-registers.diff @@ -0,0 +1,33 @@ +Pull in r219512 from upstream llvm trunk (by Hal Finkel): + + [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. + +This fixes a possible "ran out of registers" error when compiling +www/firefox 45.0 on i386. + +Introduced here: http://svnweb.freebsd.org/changeset/base/xxxxxx + +Index: lib/CodeGen/MachineScheduler.cpp +=================================================================== +--- lib/CodeGen/MachineScheduler.cpp ++++ lib/CodeGen/MachineScheduler.cpp +@@ -2365,8 +2365,8 @@ static bool tryPressure(const PressureChange &TryP + } + // If one candidate decreases and the other increases, go with it. + // Invalid candidates have UnitInc==0. +- if (tryLess(TryP.getUnitInc() < 0, CandP.getUnitInc() < 0, TryCand, Cand, +- Reason)) { ++ if (tryGreater(TryP.getUnitInc() < 0, CandP.getUnitInc() < 0, TryCand, Cand, ++ Reason)) { + return true; + } + // If the candidates are decreasing pressure, reverse priority. |