diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/combine.c | 3 |
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)) |