aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/combine.c3
2 files changed, 8 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4d15a73..b90cbc6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2016-12-01 Markus Trippelsdorf <markus@trippelsdorf.de>
+
+ PR rtl-optimization/78596
+ * combine.c (simplify_comparison): Cast to unsigned to avoid
+ left shifting of negative value.
+
2016-12-01 Matthias Klose <doko@ubuntu.com>
* doc/install.texi: Don't use pkg-config to check for bdw-gc.
diff --git a/gcc/combine.c b/gcc/combine.c
index faafcb7..b429453 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -12561,7 +12561,8 @@ simplify_comparison (enum rtx_code code, rtx *pop0, rtx *pop1)
if (GET_CODE (op0) == LSHIFTRT)
code = unsigned_condition (code);
- const_op <<= INTVAL (XEXP (op0, 1));
+ const_op = (unsigned HOST_WIDE_INT) const_op
+ << INTVAL (XEXP (op0, 1));
if (low_bits != 0
&& (code == GT || code == GTU
|| code == LE || code == LEU))