diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2019-09-30 16:21:19 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2019-09-30 16:21:19 +0000 |
commit | 0ce77f463d1d150e70a91807502d628492ca7ae5 (patch) | |
tree | fff69a7a5884e5343e2f31969d911df27599af70 /gcc/reload1.c | |
parent | 30503f4ea491b9d6b9da00889155ecaa5d15cfb9 (diff) | |
download | gcc-0ce77f463d1d150e70a91807502d628492ca7ae5.zip gcc-0ce77f463d1d150e70a91807502d628492ca7ae5.tar.gz gcc-0ce77f463d1d150e70a91807502d628492ca7ae5.tar.bz2 |
Remove global call sets: regrename.c
This patch makes regrename use a similar mask-and-clobber-set
pair to IRA when tracking whether registers are clobbered by
calls in a region. Testing for a nonzero ABI mask is equivalent
to testing for a register that crosses a call.
Since AArch64 and c6x use regrename.h, they need to be updated
to include function-abi.h first. AIUI this is preferred over
including function-abi.h in regrename.h.
2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* regrename.h (du_head::call_clobber_mask): New field.
(du_head::need_caller_save_reg): Replace with...
(du_head::call_abis): ...this new field.
* regrename.c: Include function-abi.h.
(call_clobbered_in_chain_p): New function.
(check_new_reg_p): Use crtl->abi when deciding whether a register
is free for use after RA. Use call_clobbered_in_chain_p to test
whether a candidate register would be clobbered by a call.
(find_rename_reg): Don't add call-clobber conflicts here.
(rename_chains): Check call_abis instead of need_caller_save_reg.
(merge_chains): Update for changes to du_head.
(build_def_use): Use insn_callee_abi to get the ABI of the call insn
target. Record the ABI identifier in call_abis and the set of
fully or partially clobbered registers in call_clobber_mask.
Add fully-clobbered registers to hard_conflicts here rather
than in find_rename_reg.
* config/aarch64/cortex-a57-fma-steering.c: Include function-abi.h.
(rename_single_chain): Check call_abis instead of need_caller_save_reg.
* config/aarch64/falkor-tag-collision-avoidance.c: Include
function-abi.h.
* config/c6x/c6x.c: Likewise.
From-SVN: r276332
Diffstat (limited to 'gcc/reload1.c')
0 files changed, 0 insertions, 0 deletions