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