simplify-rtx.c (simplify_const_binary_operation): Fixed shift count trucation.
authorKenneth Zadeck <zadeck@naturalbridge.com>
Sat, 9 Jun 2012 12:40:40 +0000 (12:40 +0000)
committerKenneth Zadeck <zadeck@gcc.gnu.org>
Sat, 9 Jun 2012 12:40:40 +0000 (12:40 +0000)
2012-06-09  Kenneth Zadeck <zadeck@naturalbridge.com>

* simplify-rtx.c (simplify_const_binary_operation): Fixed shift
count trucation.

From-SVN: r188359

gcc/ChangeLog
gcc/simplify-rtx.c

index 62f67f441fda9fad6eab079de0607a4eedf56a9b..5c6cc022f026e3967a5dae1afcef7814fd54c573 100644 (file)
@@ -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
index e43ee5bdf38b985a5549c06b0f001addd12cb7d7..e1bd3cf2e3b8d36d8e19992d6c8e01ee9df9b7ed 100644 (file)
@@ -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))