http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47725
--- Comment #3 from H.J. Lu <hjl.tools at gmail dot com> 2011-02-14 03:04:29 UTC --- I am testing this patch: diff --git a/gcc/combine.c b/gcc/combine.c index 5e1236b..78f3089 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -2138,6 +2138,12 @@ cant_combine_insn_p (rtx insn) return asm_noperands (PATTERN (insn)) > 0; src = SET_SRC (set); dest = SET_DEST (set); + if (GET_CODE (src) == ZERO_EXTEND + || GET_CODE (src) == SIGN_EXTEND) + src = XEXP (src, 0); + if (GET_CODE (dest) == ZERO_EXTEND + || GET_CODE (dest) == SIGN_EXTEND) + dest = XEXP (dest, 0); if (GET_CODE (src) == SUBREG) src = SUBREG_REG (src); if (GET_CODE (dest) == SUBREG)