aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKenneth Zadeck <zadeck@naturalbridge.com>2012-06-09 12:40:40 +0000
committerKenneth Zadeck <zadeck@gcc.gnu.org>2012-06-09 12:40:40 +0000
commitaef2b1d1f03eacdad6ec5fac97a04eea7cc68174 (patch)
tree9508fa69374c5c758353add1e8af1f7ebf515d36 /gcc
parentbca672f610c270de56a934b1ed14bd38f24c5bbe (diff)
downloadgcc-aef2b1d1f03eacdad6ec5fac97a04eea7cc68174.zip
gcc-aef2b1d1f03eacdad6ec5fac97a04eea7cc68174.tar.gz
gcc-aef2b1d1f03eacdad6ec5fac97a04eea7cc68174.tar.bz2
simplify-rtx.c (simplify_const_binary_operation): Fixed shift count trucation.
2012-06-09 Kenneth Zadeck <zadeck@naturalbridge.com> * simplify-rtx.c (simplify_const_binary_operation): Fixed shift count trucation. From-SVN: r188359
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/simplify-rtx.c5
2 files changed, 9 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 62f67f4..5c6cc02 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2012-06-09 Kenneth Zadeck <zadeck@naturalbridge.com>
+
+ * simplify-rtx.c (simplify_const_binary_operation): Fixed shift
+ count trucation.
+
2012-06-08 Richard Henderson <rth@redhat.com>
PR c++/53602
diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c
index e43ee5b..e1bd3cf 100644
--- a/gcc/simplify-rtx.c
+++ b/gcc/simplify-rtx.c
@@ -3653,7 +3653,10 @@ simplify_const_binary_operation (enum rtx_code code, enum machine_mode mode,
unsigned HOST_WIDE_INT cnt;
if (SHIFT_COUNT_TRUNCATED)
- o1 = double_int_zext (o1, GET_MODE_PRECISION (mode));
+ {
+ o1.high = 0;
+ o1.low &= GET_MODE_PRECISION (mode) - 1;
+ }
if (!double_int_fits_in_uhwi_p (o1)
|| double_int_to_uhwi (o1) >= GET_MODE_PRECISION (mode))