diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 10 |
2 files changed, 7 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f0c2969..7d6a3de 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -85,6 +85,9 @@ * config/arm/ldmstm.md: New file. * config/arm/arm-ldmstm.ml: New file. + * config/arm/arm.c (arm_rtx_costs_1): Remove second clause from the + if statement which adds extra costs to frame-related expressions. + 2010-08-02 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> * config/arm/arm.c (COSTS_N_INSNS): Remove definition. diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 9073702..4e2ff8a 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -6646,12 +6646,10 @@ arm_rtx_costs_1 (rtx x, enum rtx_code outer, int* total, bool speed) 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) { |