From: Kyrylo Tkachov Date: Fri, 10 Jan 2014 11:48:37 +0000 (+0000) Subject: arm.c (arm_new_rtx_costs): Use destination mode when handling a SET rtx. X-Git-Tag: upstream/12.2.0~65535 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5619162cdb418ba81d385e502e0d70e8d061cb31;p=platform%2Fupstream%2Fgcc.git arm.c (arm_new_rtx_costs): Use destination mode when handling a SET rtx. 2014-01-10 Kyrylo Tkachov * config/arm/arm.c (arm_new_rtx_costs): Use destination mode when handling a SET rtx. From-SVN: r206521 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 24cb3b8..b6f8089 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2014-01-10 Kyrylo Tkachov + * config/arm/arm.c (arm_new_rtx_costs): Use destination mode + when handling a SET rtx. + +2014-01-10 Kyrylo Tkachov + * config/arm/arm-cores.def (cortex-a53): Specify FL_CRC32. (cortex-a57): Likewise. (cortex-a57.cortex-a53): Likewise. Remove redundant flags. diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 842d67f..18196b3 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -9092,6 +9092,9 @@ arm_new_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer_code, { 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))) { @@ -9106,6 +9109,8 @@ arm_new_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer_code, 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))) @@ -9113,7 +9118,6 @@ arm_new_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer_code, /* 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. */