aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMarkus Trippelsdorf <markus@trippelsdorf.de>2016-12-01 14:04:13 +0000
committerMarkus Trippelsdorf <trippels@gcc.gnu.org>2016-12-01 14:04:13 +0000
commit67586d38f5b1858fba96973e9341f7d65f64ea9c (patch)
tree6d5f389bb68e5a5a03cb2486febc70f0b90005ee /gcc
parent8e9c33cd3bd55c2364a2efc7fc2de0957d7b991d (diff)
downloadgcc-67586d38f5b1858fba96973e9341f7d65f64ea9c.zip
gcc-67586d38f5b1858fba96973e9341f7d65f64ea9c.tar.gz
gcc-67586d38f5b1858fba96973e9341f7d65f64ea9c.tar.bz2
Fix rtl-optimization/78596 - combine.c:12561:14: runtime error: left shift of negative value
PR rtl-optimization/78596 * combine.c (simplify_comparison): Cast to unsigned to avoid left shifting of negative value. From-SVN: r243111
Diffstat (limited to 'gcc')
-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))