aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2017-12-01 09:14:21 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2017-12-01 09:14:21 +0100
commit5ac4b05631a3e93ab8630f82cf7e4763a46b8e69 (patch)
treee79e75ea086f1de4c3523411aca60152a164607f /gcc
parent9ede7b1bf0f85e3c14e09891ce0720c636ab8ffc (diff)
downloadgcc-5ac4b05631a3e93ab8630f82cf7e4763a46b8e69.zip
gcc-5ac4b05631a3e93ab8630f82cf7e4763a46b8e69.tar.gz
gcc-5ac4b05631a3e93ab8630f82cf7e4763a46b8e69.tar.bz2
re PR tree-optimization/83221 (qsort comparator not anti-commutative: -2147483648, -2147483648)
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/tree-ssa-reassoc.c4
2 files changed, 7 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5ab9f6f..46c4545 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/tree-ssa-reassoc.c b/gcc/tree-ssa-reassoc.c
index 5e8cac6..485d0a6 100644
--- a/gcc/tree-ssa-reassoc.c
+++ b/gcc/tree-ssa-reassoc.c
@@ -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);