+2015-11-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ * combine.c (subst): Do not return clobber of zero in widening mult
+ case. Just return x unchanged if it is a no-op substitution.
+
2015-11-26 Vladimir Makarov <vmakarov@redhat.com>
PR target/68416
|| GET_CODE (SET_DEST (x)) == PC))
fmt = "ie";
- /* Substituting into the operands of a widening MULT is not likely
+ /* Trying to simplify the operands of a widening MULT is not likely
to create RTL matching a machine insn. */
if (code == MULT
&& (GET_CODE (XEXP (x, 0)) == ZERO_EXTEND
&& (GET_CODE (XEXP (x, 1)) == ZERO_EXTEND
|| GET_CODE (XEXP (x, 1)) == SIGN_EXTEND)
&& REG_P (XEXP (XEXP (x, 0), 0))
- && REG_P (XEXP (XEXP (x, 1), 0)))
- {
- if (from == to)
- return x;
- else
- return gen_rtx_CLOBBER (GET_MODE (x), const0_rtx);
- }
+ && REG_P (XEXP (XEXP (x, 1), 0))
+ && from == to)
+ return x;
+
/* Get the mode of operand 0 in case X is now a SIGN_EXTEND of a
constant. */