https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70687

H.J. Lu <hjl.tools at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2016-04-15
     Ever confirmed|0                           |1

--- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> ---
This works for me:

diff --git a/gcc/combine.c b/gcc/combine.c
index 1d0e8be..197b9da 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -11101,6 +11101,9 @@ change_zero_ext (rtx *src)
          && subreg_lowpart_p (XEXP (x, 0)))
   {
     size = GET_MODE_PRECISION (GET_MODE (XEXP (x, 0)));
+    /* Check for undefined shift.  */
+    if (size >= HOST_BITS_PER_WIDE_INT)
+      continue;
     x = SUBREG_REG (XEXP (x, 0));
   }
       else

Reply via email to