Pass an ABI to choose_hard_reg_mode
authorRichard Sandiford <richard.sandiford@arm.com>
Mon, 30 Sep 2019 16:20:04 +0000 (16:20 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Mon, 30 Sep 2019 16:20:04 +0000 (16:20 +0000)
commit737d6a1a1745bdd4041e73800a842a1086967d5d
tree1347aa114cf2ffddae7f64d2e90f4d8389e1aba9
parent6ee2cc70024253d2670a4a317158b2a65251a1d1
Pass an ABI to choose_hard_reg_mode

choose_hard_reg_mode previously took a boolean saying whether the
mode needed to be call-preserved.  This patch replaces it with an
optional ABI pointer instead, so that the function can use that
to test whether a value is call-saved.

default_dwarf_frame_reg_mode uses eh_edge_abi because that's the
ABI that matters for unwinding.  Targets need to override the hook
if they want something different.

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

gcc/
* rtl.h (predefined_function_abi): Declare.
(choose_hard_reg_mode): Take a pointer to a predefined_function_abi
instead of a boolean call_save flag.
* config/gcn/gcn.c (gcn_hard_regno_caller_save_mode): Update call
accordingly.
* config/i386/i386.h (HARD_REGNO_CALLER_SAVE_MODE): Likewise.
* config/ia64/ia64.h (HARD_REGNO_CALLER_SAVE_MODE): Likewise.
* config/mips/mips.c (mips_hard_regno_caller_save_mode): Likewise.
* config/msp430/msp430.h (HARD_REGNO_CALLER_SAVE_MODE): Likewise.
* config/rs6000/rs6000.h (HARD_REGNO_CALLER_SAVE_MODE): Likewise.
* config/sh/sh.c (sh_hard_regno_caller_save_mode): Likewise.
* reginfo.c (init_reg_modes_target): Likewise.
(choose_hard_reg_mode): Take a pointer to a predefined_function_abi
instead of a boolean call_save flag.
* targhooks.c: Include function-abi.h.
(default_dwarf_frame_reg_mode): Update call to choose_hard_reg_mode,
using eh_edge_abi to choose the mode.

From-SVN: r276312
gcc/ChangeLog
gcc/config/gcn/gcn.c
gcc/config/i386/i386.h
gcc/config/ia64/ia64.h
gcc/config/mips/mips.c
gcc/config/msp430/msp430.h
gcc/config/rs6000/rs6000.h
gcc/config/sh/sh.c
gcc/reginfo.c
gcc/rtl.h
gcc/targhooks.c