aboutsummaryrefslogtreecommitdiff
path: root/gcc/combine.c
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/combine.c
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/combine.c')
-rw-r--r--gcc/combine.c3
1 files changed, 2 insertions, 1 deletions
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))