re PR tree-optimization/83221 (qsort comparator not anti-commutative: -2147483648...
authorJakub Jelinek <jakub@redhat.com>
Fri, 1 Dec 2017 08:14:21 +0000 (09:14 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 1 Dec 2017 08:14:21 +0000 (09:14 +0100)
PR tree-optimization/83221
* tree-ssa-reassoc.c (sort_by_operand_rank): Shift bb_rank
down by 16.
(init_reassoc): Formatting fix.

From-SVN: r255297

gcc/ChangeLog
gcc/tree-ssa-reassoc.c

index 5ab9f6fab5f5176a6fb19952c2fe7bfd1ee06324..46c4545efbe3850b3e8fccbdb8c3cb0907d91339 100644 (file)
@@ -1,5 +1,10 @@
 2017-12-01  Jakub Jelinek  <jakub@redhat.com>
 
+       PR tree-optimization/83221
+       * tree-ssa-reassoc.c (sort_by_operand_rank): Shift bb_rank
+       down by 16.
+       (init_reassoc): Formatting fix.
+
        PR sanitizer/81275
        * tree-cfg.c (group_case_labels_stmt): Don't optimize away
        C++ FE implicitly added __builtin_unreachable () until -Wreturn-type
index 5e8cac69d5d588bdef43b89d2e1ea5df6b964aff..485d0a692ce8ddd6194ce75496f1eb8e41d9b652 100644 (file)
@@ -543,7 +543,7 @@ sort_by_operand_rank (const void *pa, const void *pb)
            return -1;
          /* If neither is, compare bb_rank.  */
          if (bb_rank[bbb->index] != bb_rank[bba->index])
-           return bb_rank[bbb->index] - bb_rank[bba->index];
+           return (bb_rank[bbb->index] >> 16) - (bb_rank[bba->index] >> 16);
        }
 
       bool da = reassoc_stmt_dominates_stmt_p (stmta, stmtb);
@@ -6131,7 +6131,7 @@ init_reassoc (void)
 
   /* Set up rank for each BB  */
   for (i = 0; i < n_basic_blocks_for_fn (cfun) - NUM_FIXED_BLOCKS; i++)
-    bb_rank[bbs[i]] = ++rank  << 16;
+    bb_rank[bbs[i]] = ++rank << 16;
 
   free (bbs);
   calculate_dominance_info (CDI_POST_DOMINATORS);