On 9/11/19 1:16 PM, Richard Sandiford wrote:
> 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-11 Richard Sandiford <richard.sandif...@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 call_insn_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.
OK
jeff