2014-01-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+ * config/arm/arm.c (arm_new_rtx_costs): Use destination mode
+ when handling a SET rtx.
+
+2014-01-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
* config/arm/arm-cores.def (cortex-a53): Specify FL_CRC32.
(cortex-a57): Likewise.
(cortex-a57.cortex-a53): Likewise. Remove redundant flags.
{
case SET:
*cost = 0;
+ /* SET RTXs don't have a mode so we get it from the destination. */
+ mode = GET_MODE (SET_DEST (x));
+
if (REG_P (SET_SRC (x))
&& REG_P (SET_DEST (x)))
{
in 16 bits in Thumb mode. */
if (!speed_p && TARGET_THUMB && outer_code == COND_EXEC)
*cost >>= 1;
+
+ return true;
}
if (CONST_INT_P (SET_SRC (x)))
/* Handle CONST_INT here, since the value doesn't have a mode
and we would otherwise be unable to work out the true cost. */
*cost = rtx_cost (SET_DEST (x), SET, 0, speed_p);
- mode = GET_MODE (SET_DEST (x));
outer_code = SET;
/* Slightly lower the cost of setting a core reg to a constant.
This helps break up chains and allows for better scheduling. */