diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2019-09-10 18:57:09 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2019-09-10 18:57:09 +0000 |
commit | d7fb4c3162307590c0babddcea4fb60c07a7c033 (patch) | |
tree | b7a8cc40362f33043a160a1591ff79c0941f447a /gcc/config/visium | |
parent | 53bee79caba4fb88acbcd9bad7891ea45b5511e3 (diff) | |
download | gcc-d7fb4c3162307590c0babddcea4fb60c07a7c033.zip gcc-d7fb4c3162307590c0babddcea4fb60c07a7c033.tar.gz gcc-d7fb4c3162307590c0babddcea4fb60c07a7c033.tar.bz2 |
Remove call_really_used_regs
After previous patches, it's now possible for call_used_regs to be
the "real" set of call-clobbered registers, without any special
handling for fixed registers. This patch therefore removes the
separate call_really_used_regs and updates the targets that define
CALL_REALLY_USED_REGISTERS so that they handle call_used_regs in
the same way that they used to handle call_really_used_regs.
With this change, it's no longer necessary for targets that define
CALL_REALLY_USED_REGISTERS to define CALL_USED_REGISTER as well.
2019-09-10 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* doc/tm.texi.in: Document that exactly one of CALL_USED_REGISTERS
and CALL_REALLY_USED_REGISTERS must be defined, and that
CALL_REALLY_USED_REGISTERS is preferred.
* doc/tm.texi: Regenerate.
* hard-reg-set.h (target_hard_regs::x_call_really_used_regs): Delete.
(call_really_used_regs): Likewise.
* reginfo.c: Raise an #error if both CALL_USED_REGISTERS and
CALL_REALLY_USED_REGISTERS are defined.
(initial_call_used_regs): Use CALL_REALLY_USED_REGISTERS as the
initial value if defined.
(initial_call_really_used_regs): Delete.
(saved_call_really_used_regs): Likewise.
(CALL_REALLY_USED_REGNO_P): Likewise.
(init_reg_sets): Remove handling of call_really_used_regs.
(save_register_info, restore_register_info, globalize_reg): Likewise.
(init_reg_sets_1): Likewise. Use call_used_regs instead of
CALL_REALLY_USED_REGNO_P. Don't set call_used_regs for registers
outside operand_reg_set.
(fix_register): Don't change call_used_regs if
CALL_REALLY_USED_REGISTERS is defined.
* config/csky/csky.h (CALL_USED_REGISTERS): Delete.
* config/csky/csky.c (get_csky_live_regs): Use call_used_regs
instead of call_really_used_regs.
(csky_conditional_register_usage): Remove the old handling of
call_used_regs and change the handling of call_really_used_regs
to use call_used_regs instead.
* config/ia64/ia64.h (CALL_USED_REGISTERS): Delete.
* config/ia64/ia64.c (fix_range): Don't set call_used_regs when
making a register fixed.
* config/m32r/m32r.h (CALL_USED_REGISTERS): Delete.
* config/m32r/m32r.c (MUST_SAVE_REGISTER): Use call_used_regs
instead of call_really_used_regs.
(m32r_conditional_register_usage): Don't set call_used_regs when
making a register fixed.
* config/mips/mips.h (CALL_USED_REGISTERS): Delete.
* config/mips/mips.c (mips_global_pointer): Use call_used_regs
instead of call_really_used_regs.
(mips_interrupt_extra_call_saved_reg_p): Likewise.
(mips_cfun_call_saved_reg_p): Likewise.
(mips_swap_registers): Remove the old handling of call_used_regs
and change the handling of call_really_used_regs to use call_used_regs
instead.
(mips_conditional_register_usage): Likewise.
* config/mn10300/mn10300.h (CALL_USED_REGISTERS): Delete.
* config/mn10300/mn10300.c (fp_regs_to_save): Use call_used_regs
instead of call_really_used_regs.
(mn10300_get_live_callee_saved_regs): Likewise.
(mn10300_expand_prologue, mn10300_expand_epilogue): Likewise.
(mn10300_conditional_register_usage): Don't set call_used_regs when
making a register fixed.
* config/rs6000/rs6000.h (CALL_USED_REGISTERS): Delete.
* config/rs6000/rs6000.c (rs6000_conditional_register_usage):
Remove the old handling of call_used_regs and change the handling
of call_really_used_regs to use call_used_regs instead.
* config/s390/s390.h (CALL_USED_REGISTERS): Delete.
* config/s390/s390.c (s390_regs_ever_clobbered): Use call_used_regs
instead of call_really_used_regs.
(s390_register_info_gprtofpr, s390_register_info): Likewise.
(s390_hard_regno_rename_ok, s390_hard_regno_scratch_ok): Likewise.
(s390_emit_prologue, s300_set_up_by_prologue): Likewise.
(s390_can_use_return_insn, s390_optimize_prologue): Likewise.
(s390_conditional_register_usage): Remove the old handling of
call_used_regs and change the handling of call_really_used_regs
to use call_used_regs instead.
* config/sh/sh.h (CALL_USED_REGISTERS): Delete.
* config/sh/sh.c (output_stack_adjust, calc_live_regs): Likewise.
(sh_fix_range, reg_unused_after): Likewise.
(sh_conditional_register_usage): Remove the old handling of
call_used_regs and change the handling of call_really_used_regs
to use call_used_regs instead.
* config/sparc/sparc.h (CALL_USED_REGISTERS): Delete.
* config/sparc/sparc.c (sparc_conditional_register_usage): Don't set
call_used_regs when making a register fixed.
* config/tilegx/tilegx.h (CALL_USED_REGISTERS): Delete.
* config/tilegx/tilegx.c (tilegx_conditional_register_usage): Don't set
call_used_regs when making a register fixed.
* config/tilepro/tilepro.h (CALL_USED_REGISTERS): Delete.
* config/tilepro/tilepro.c (tilepro_conditional_register_usage): Don't
set call_used_regs when making a register fixed.
* config/visium/visium.h (CALL_USED_REGISTERS): Delete.
* config/visium/visium.c (visium_conditional_register_usage): Remove
the old handling of call_used_regs and change the handling of
call_really_used_regs to use call_used_regs instead.
From-SVN: r275605
Diffstat (limited to 'gcc/config/visium')
-rw-r--r-- | gcc/config/visium/visium.c | 28 | ||||
-rw-r--r-- | gcc/config/visium/visium.h | 21 |
2 files changed, 14 insertions, 35 deletions
diff --git a/gcc/config/visium/visium.c b/gcc/config/visium/visium.c index 367e1e5..8477008 100644 --- a/gcc/config/visium/visium.c +++ b/gcc/config/visium/visium.c @@ -754,20 +754,20 @@ visium_conditional_register_usage (void) { if (visium_cpu_and_features == PROCESSOR_GR5) { - fixed_regs[24] = call_used_regs[24] = 1; - fixed_regs[25] = call_used_regs[25] = 1; - fixed_regs[26] = call_used_regs[26] = 1; - fixed_regs[27] = call_used_regs[27] = 1; - fixed_regs[28] = call_used_regs[28] = 1; - call_really_used_regs[24] = 0; - call_really_used_regs[25] = 0; - call_really_used_regs[26] = 0; - call_really_used_regs[27] = 0; - call_really_used_regs[28] = 0; + fixed_regs[24] = 1; + fixed_regs[25] = 1; + fixed_regs[26] = 1; + fixed_regs[27] = 1; + fixed_regs[28] = 1; + call_used_regs[24] = 0; + call_used_regs[25] = 0; + call_used_regs[26] = 0; + call_used_regs[27] = 0; + call_used_regs[28] = 0; } - fixed_regs[31] = call_used_regs[31] = 1; - call_really_used_regs[31] = 0; + fixed_regs[31] = 1; + call_used_regs[31] = 0; /* We also need to change the long-branch register. */ if (visium_cpu_and_features == PROCESSOR_GR5) @@ -781,8 +781,8 @@ visium_conditional_register_usage (void) { for (int i = FP_FIRST_REGNUM; i <= FP_LAST_REGNUM; i++) { - fixed_regs[i] = call_used_regs[i] = 1; - call_really_used_regs[i] = 0; + fixed_regs[i] = 1; + call_used_regs[i] = 0; } } } diff --git a/gcc/config/visium/visium.h b/gcc/config/visium/visium.h index c9376b2..0d7ae0f 100644 --- a/gcc/config/visium/visium.h +++ b/gcc/config/visium/visium.h @@ -488,27 +488,6 @@ 0, 0, 0, 0, 0, 0, 0, 0, /* f8 .. f15 */ \ 1, 1, 1 } /* flags, arg, frame */ -/* `CALL_USED_REGISTERS' - - Like `FIXED_REGISTERS' but has 1 for each register that is - clobbered (in general) by function calls as well as for fixed - registers. This macro therefore identifies the registers that are - not available for general allocation of values that must live - across function calls. - - If a register has 0 in `CALL_USED_REGISTERS', the compiler - automatically saves it on function entry and restores it on - function exit, if the register is used within the function. */ -#define CALL_USED_REGISTERS \ - { 1, 1, 1, 1, 1, 1, 1, 1, /* r0 .. r7 */ \ - 1, 1, 1, 0, 0, 0, 0, 0, /* r8 .. r15 */ \ - 0, 0, 0, 0, 1, 1, 0, 1, /* r16 .. r23 */ \ - 1, 1, 1, 1, 1, 1, 1, 1, /* r24 .. r31 */ \ - 1, 1, /* mdb, mdc */ \ - 1, 1, 1, 1, 1, 1, 1, 1, /* f0 .. f7 */ \ - 1, 0, 0, 0, 0, 0, 0, 0, /* f8 .. f15 */ \ - 1, 1, 1 } /* flags, arg, frame */ - /* Like `CALL_USED_REGISTERS' except this macro doesn't require that the entire set of `FIXED_REGISTERS' be included. (`CALL_USED_REGISTERS' must be a superset of `FIXED_REGISTERS'). |