diff options
author | Markus Trippelsdorf <markus@trippelsdorf.de> | 2016-12-01 14:04:13 +0000 |
---|---|---|
committer | Markus Trippelsdorf <trippels@gcc.gnu.org> | 2016-12-01 14:04:13 +0000 |
commit | 67586d38f5b1858fba96973e9341f7d65f64ea9c (patch) | |
tree | 6d5f389bb68e5a5a03cb2486febc70f0b90005ee /gcc/combine.c | |
parent | 8e9c33cd3bd55c2364a2efc7fc2de0957d7b991d (diff) | |
download | gcc-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.c | 3 |
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)) |