diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f93061dd5866..91293c1dfbba 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2006-04-23 Roger Sayle + + * config/fr30/fr30.md (addsi_small_int): Use REGNO_PTR_FRAME_P to + identify potentially eliminable registers to additionally catch + VIRTUAL_INCOMING_ARGS_REGNUM. + (addsi3): Update the conditions on when to use addsi_small_int. + 2006-04-23 Roger Sayle PR target/16641 diff --git a/gcc/config/fr30/fr30.md b/gcc/config/fr30/fr30.md index 734b3749ada8..0398eccc005a 100644 --- a/gcc/config/fr30/fr30.md +++ b/gcc/config/fr30/fr30.md @@ -654,10 +654,10 @@ emit_insn (gen_addsi_regs (operands[0], operands[1], operands[2])); else if (GET_CODE (operands[2]) != CONST_INT) emit_insn (gen_addsi_big_int (operands[0], operands[1], operands[2])); - else if ( (REGNO (operands[1]) != FRAME_POINTER_REGNUM) - && (REGNO (operands[1]) != ARG_POINTER_REGNUM) - && (INTVAL (operands[2]) >= -16) - && (INTVAL (operands[2]) <= 15)) + else if (INTVAL (operands[2]) >= -16 + && INTVAL (operands[2]) <= 15 + && (!REGNO_PTR_FRAME_P (REGNO (operands[1])) + || REGNO (operands[1]) == STACK_POINTER_REGNUM)) emit_insn (gen_addsi_small_int (operands[0], operands[1], operands[2])); else emit_insn (gen_addsi_big_int (operands[0], operands[1], operands[2])); @@ -680,8 +680,8 @@ [(set (match_operand:SI 0 "register_operand" "=r,r") (plus:SI (match_operand:SI 1 "register_operand" "0,0") (match_operand:SI 2 "add_immediate_operand" "I,J")))] - " (REGNO (operands[1]) != FRAME_POINTER_REGNUM) - && (REGNO (operands[1]) != ARG_POINTER_REGNUM)" + "! REGNO_PTR_FRAME_P (REGNO (operands[1])) + || REGNO (operands[1]) == STACK_POINTER_REGNUM" "@ addn %2, %0 addn2 %2, %0"