lra-assigns.c: fix pseudo_compare_func
authorAlexander Monakov <amonakov@ispras.ru>
Thu, 20 Jul 2017 15:15:55 +0000 (18:15 +0300)
committerAlexander Monakov <amonakov@gcc.gnu.org>
Thu, 20 Jul 2017 15:15:55 +0000 (18:15 +0300)
* lra-assigns.c (pseudo_compare_func): Fix comparison step based on
non_spilled_static_chain_regno_p.

From-SVN: r250395

gcc/ChangeLog
gcc/lra-assigns.c

index 9eb61fe62dee45914fd885fd685b39a869e7f238..cb7e697d69bd168dddcfc51ff0af346845892975 100644 (file)
@@ -1,3 +1,8 @@
+2017-07-20  Alexander Monakov  <amonakov@ispras.ru>
+
+       * lra-assigns.c (pseudo_compare_func): Fix comparison step based on
+       non_spilled_static_chain_regno_p.
+
 2017-07-20  Alexander Monakov  <amonakov@ispras.ru>
 
        * gimple-ssa-store-merging.c (sort_by_bitpos): Return 0 on equal bitpos.
index 42556d3a65ec0686cf6f029bcf2fe10eb0678f99..2aadeefb21457b504e8df7b48f160944cfbb6845 100644 (file)
@@ -253,10 +253,9 @@ pseudo_compare_func (const void *v1p, const void *v2p)
 
   /* Assign hard reg to static chain pointer first pseudo when
      non-local goto is used.  */
-  if (non_spilled_static_chain_regno_p (r1))
-    return -1;
-  else if (non_spilled_static_chain_regno_p (r2))
-    return 1;
+  if ((diff = (non_spilled_static_chain_regno_p (r2)
+              - non_spilled_static_chain_regno_p (r1))) != 0)
+    return diff;
 
   /* Prefer to assign more frequently used registers first.  */
   if ((diff = lra_reg_info[r2].freq - lra_reg_info[r1].freq) != 0)