Pass an ABI identifier to hard_regno_call_part_clobbered
authorRichard Sandiford <richard.sandiford@arm.com>
Mon, 30 Sep 2019 16:19:59 +0000 (16:19 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Mon, 30 Sep 2019 16:19:59 +0000 (16:19 +0000)
commit6ee2cc70024253d2670a4a317158b2a65251a1d1
tree7ceef0efbbe69d1fadfdd5ab9b202832d6239868
parent2a2e3a0dfcbe0861915f421d11b828f0c35023f0
Pass an ABI identifier to hard_regno_call_part_clobbered

This patch replaces the rtx_insn argument to
targetm.hard_regno_call_part_clobbered with an ABI identifier, since
call insns are now just one possible way of getting an ABI handle.
This in turn allows predefined_function_abi::initialize to do the
right thing for non-default ABIs.

The horrible ?: in need_for_call_save_p goes away in a later patch,
with the series as a whole removing most direct calls to the hook in
favour of function_abi operations.

2019-09-30  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* target.def (hard_regno_call_part_clobbered): Take an ABI
identifier instead of an rtx_insn.
* doc/tm.texi: Regenerate.
* hooks.h (hook_bool_insn_uint_mode_false): Delete.
(hook_bool_uint_uint_mode_false): New function.
* hooks.c (hook_bool_insn_uint_mode_false): Delete.
(hook_bool_uint_uint_mode_false): New function.
* config/aarch64/aarch64.c (aarch64_hard_regno_call_part_clobbered):
Take an ABI identifier instead of an rtx_insn.
* config/avr/avr.c (avr_hard_regno_call_part_clobbered): Likewise.
* config/i386/i386.c (ix86_hard_regno_call_part_clobbered): Likewise.
* config/mips/mips.c (mips_hard_regno_call_part_clobbered): Likewise.
* config/pru/pru.c (pru_hard_regno_call_part_clobbered): Likewise.
* config/rs6000/rs6000.c (rs6000_hard_regno_call_part_clobbered):
Likewise.
* config/s390/s390.c (s390_hard_regno_call_part_clobbered): Likewise.
* cselib.c: Include function-abi.h.
(cselib_process_insn): Update call to
targetm.hard_regno_call_part_clobbered, using insn_callee_abi
to get the appropriate ABI identifier.
* function-abi.cc (predefined_function_abi::initialize): Update call
to targetm.hard_regno_call_part_clobbered.
* ira-conflicts.c (ira_build_conflicts): Likewise.
* ira-costs.c (ira_tune_allocno_costs): Likewise.
* lra-constraints.c: Include function-abi.h.
(need_for_call_save_p): Update call to
targetm.hard_regno_call_part_clobbered, using insn_callee_abi
to get the appropriate ABI identifier.
* lra-lives.c (check_pseudos_live_through_calls): Likewise.
* regcprop.c (copyprop_hardreg_forward_1): Update call
to targetm.hard_regno_call_part_clobbered.
* reginfo.c (choose_hard_reg_mode): Likewise.
* regrename.c (check_new_reg_p): Likewise.
* reload.c (find_equiv_reg): Likewise.
* reload1.c (emit_reload_insns): Likewise.
* sched-deps.c: Include function-abi.h.
(deps_analyze_insn): Update call to
targetm.hard_regno_call_part_clobbered, using insn_callee_abi
to get the appropriate ABI identifier.
* sel-sched.c (init_regs_for_mode, mark_unavailable_hard_regs): Update
call to targetm.hard_regno_call_part_clobbered.
* targhooks.c (default_dwarf_frame_reg_mode): Likewise.

From-SVN: r276311
26 files changed:
gcc/ChangeLog
gcc/config/aarch64/aarch64.c
gcc/config/avr/avr.c
gcc/config/i386/i386.c
gcc/config/mips/mips.c
gcc/config/pru/pru.c
gcc/config/rs6000/rs6000.c
gcc/config/s390/s390.c
gcc/cselib.c
gcc/doc/tm.texi
gcc/function-abi.cc
gcc/hooks.c
gcc/hooks.h
gcc/ira-conflicts.c
gcc/ira-costs.c
gcc/lra-constraints.c
gcc/lra-lives.c
gcc/regcprop.c
gcc/reginfo.c
gcc/regrename.c
gcc/reload.c
gcc/reload1.c
gcc/sched-deps.c
gcc/sel-sched.c
gcc/target.def
gcc/targhooks.c