2010-11-08 Yao Qi Backport from mainline: gcc/ 2010-08-02 Bernd Schmidt * config/arm/arm.c (arm_rtx_costs_1): Remove second clause from the if statement which adds extra costs to frame-related expressions. === modified file 'gcc/config/arm/arm.c' --- old/gcc/config/arm/arm.c 2010-11-11 11:00:53 +0000 +++ new/gcc/config/arm/arm.c 2010-11-11 11:50:33 +0000 @@ -6805,12 +6805,10 @@ since then they might not be moved outside of loops. As a compromise we allow integration with ops that have a constant as their second operand. */ - if ((REG_OR_SUBREG_REG (XEXP (x, 0)) - && ARM_FRAME_RTX (REG_OR_SUBREG_RTX (XEXP (x, 0))) - && GET_CODE (XEXP (x, 1)) != CONST_INT) - || (REG_OR_SUBREG_REG (XEXP (x, 0)) - && ARM_FRAME_RTX (REG_OR_SUBREG_RTX (XEXP (x, 0))))) - *total = 4; + if (REG_OR_SUBREG_REG (XEXP (x, 0)) + && ARM_FRAME_RTX (REG_OR_SUBREG_RTX (XEXP (x, 0))) + && GET_CODE (XEXP (x, 1)) != CONST_INT) + *total = COSTS_N_INSNS (1); if (mode == DImode) {