diff options
Diffstat (limited to 'gcc/gcse.c')
-rw-r--r-- | gcc/gcse.c | 32 |
1 files changed, 1 insertions, 31 deletions
diff --git a/gcc/gcse.c b/gcc/gcse.c index fa187778380..70ed27574cf 100644 --- a/gcc/gcse.c +++ b/gcc/gcse.c @@ -4649,38 +4649,8 @@ insert_insn_end_bb (expr, bb, pre) /* Since different machines initialize their parameter registers in different orders, assume nothing. Collect the set of all parameter registers. */ - CLEAR_HARD_REG_SET (parm_regs); - nparm_regs = 0; - for (p = CALL_INSN_FUNCTION_USAGE (insn); p ; p = XEXP (p, 1)) - if (GET_CODE (XEXP (p, 0)) == USE - && GET_CODE (XEXP (XEXP (p, 0), 0)) == REG) - { - if (REGNO (XEXP (XEXP (p, 0), 0)) >= FIRST_PSEUDO_REGISTER) - abort (); - - /* We only care about registers which can hold function - arguments. */ - if (! FUNCTION_ARG_REGNO_P (REGNO (XEXP (XEXP (p, 0), 0)))) - continue; - - SET_HARD_REG_BIT (parm_regs, REGNO (XEXP (XEXP (p, 0), 0))); - nparm_regs++; - } + insn = find_first_parameter_load (insn, bb->head); - /* Search backward for the first set of a register in this set. */ - while (nparm_regs && bb->head != insn) - { - insn = PREV_INSN (insn); - p = single_set (insn); - if (p && GET_CODE (SET_DEST (p)) == REG - && REGNO (SET_DEST (p)) < FIRST_PSEUDO_REGISTER - && TEST_HARD_REG_BIT (parm_regs, REGNO (SET_DEST (p)))) - { - CLEAR_HARD_REG_BIT (parm_regs, REGNO (SET_DEST (p))); - nparm_regs--; - } - } - /* If we found all the parameter loads, then we want to insert before the first parameter load. |