Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 13 Mar 2016 18:34:32 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r296802 - stable/10/contrib/llvm/patches
Message-ID:  <201603131834.u2DIYWcl012415@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Sun Mar 13 18:34:32 2016
New Revision: 296802
URL: https://svnweb.freebsd.org/changeset/base/296802

Log:
  Add patch corresponding to r296800.

Added:
  stable/10/contrib/llvm/patches/patch-r296800-llvm-r219512-out-of-registers.diff

Added: stable/10/contrib/llvm/patches/patch-r296800-llvm-r219512-out-of-registers.diff
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/10/contrib/llvm/patches/patch-r296800-llvm-r219512-out-of-registers.diff	Sun Mar 13 18:34:32 2016	(r296802)
@@ -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.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201603131834.u2DIYWcl012415>