On 9/25/19 9:38 AM, Richard Sandiford wrote:
> Richard Sandiford <richard.sandif...@arm.com> writes:
>> This patch replaces get_call_reg_set_usage with call_insn_abi,
>> which returns the ABI of the target of a call insn.  The ABI's
>> full_reg_clobbers corresponds to regs_invalidated_by_call,
>> whereas many callers instead passed call_used_or_fixed_regs, i.e.:
>>
>>   (regs_invalidated_by_call | fixed_reg_set)
>>
>> The patch slavishly preserves the "| fixed_reg_set" for these callers;
>> later patches will clean this up.
> 
> On reflection, I think insn_callee_abi would be a better name for the
> function than call_insn_abi, since it should make it clearer that the
> function returns the ABI of the target function.  In future we could
> have expr_callee_abi for CALL_EXPRs.
> 
> Also, after Segher's comments for 10/32, I've used "callee_abi" as
> the name of temporary variables, instead of just "abi".
> 
> I've made the same change for later patches (except where I've posted
> new versions instead), but it didn't seem worth spamming the lists
> with that.
> 
> Tested as before.
> 
> Richard
> 
> PS. Ping for the series :-)
> 
> 
> 2019-09-25  Richard Sandiford  <richard.sandif...@arm.com>
> 
> gcc/
>       * target.def (insn_callee_abi): New hook.
>       (remove_extra_call_preserved_regs): Delete.
>       * doc/tm.texi.in (TARGET_INSN_CALLEE_ABI): New macro.
>       (TARGET_REMOVE_EXTRA_CALL_PRESERVED_REGS): Delete.
>       * doc/tm.texi: Regenerate.
>       * targhooks.h (default_remove_extra_call_preserved_regs): Delete.
>       * targhooks.c (default_remove_extra_call_preserved_regs): Delete.
>       * config/aarch64/aarch64.c (aarch64_simd_call_p): Constify the
>       insn argument.
>       (aarch64_remove_extra_call_preserved_regs): Delete.
>       (aarch64_insn_callee_abi): New function.
>       (TARGET_REMOVE_EXTRA_CALL_PRESERVED_REGS): Delete.
>       (TARGET_INSN_CALLEE_ABI): New macro.
>       * rtl.h (get_call_fndecl): Declare.
>       (cgraph_rtl_info): Fix formatting.  Tweak comment for
>       function_used_regs.  Remove function_used_regs_valid.
>       * rtlanal.c (get_call_fndecl): Moved from final.c
>       * function-abi.h (insn_callee_abi): Declare.
>       (target_function_abi_info): Mention insn_callee_abi.
>       * function-abi.cc (fndecl_abi): Handle flag_ipa_ra in a similar
>       way to get_call_reg_set_usage did.
>       (insn_callee_abi): New function.
>       * regs.h (get_call_reg_set_usage): Delete.
>       * final.c: Include function-abi.h.
>       (collect_fn_hard_reg_usage): Add fixed and stack registers to
>       function_used_regs before the main loop rather than afterwards.
>       Use insn_callee_abi instead of get_call_reg_set_usage.  Exit early
>       if function_used_regs ends up not being useful.
>       (get_call_fndecl): Move to rtlanal.c
>       (get_call_cgraph_rtl_info, get_call_reg_set_usage): Delete.
>       * caller-save.c: Include function-abi.h.
>       (setup_save_areas, save_call_clobbered_regs): Use insn_callee_abi
>       instead of get_call_reg_set_usage.
>       * cfgcleanup.c: Include function-abi.h.
>       (old_insns_match_p): Use insn_callee_abi instead of
>       get_call_reg_set_usage.
>       * cgraph.h (cgraph_node::rtl_info): Take a const_tree instead of
>       a tree.
>       * cgraph.c (cgraph_node::rtl_info): Likewise.  Initialize
>       function_used_regs.
>       * df-scan.c: Include function-abi.h.
>       (df_get_call_refs): Use insn_callee_abi instead of
>       get_call_reg_set_usage.
>       * ira-lives.c: Include function-abi.h.
>       (process_bb_node_lives): Use insn_callee_abi instead of
>       get_call_reg_set_usage.
>       * lra-lives.c: Include function-abi.h.
>       (process_bb_lives): Use insn_callee_abi instead of
>       get_call_reg_set_usage.
>       * postreload.c: Include function-abi.h.
>       (reload_combine): Use insn_callee_abi instead of
>       get_call_reg_set_usage.
>       * regcprop.c: Include function-abi.h.
>       (copyprop_hardreg_forward_1): Use insn_callee_abi instead of
>       get_call_reg_set_usage.
>       * resource.c: Include function-abi.h.
>       (mark_set_resources, mark_target_live_regs): Use insn_callee_abi
>       instead of get_call_reg_set_usage.
>       * var-tracking.c: Include function-abi.h.
>       (dataflow_set_clear_at_call): Use insn_callee_abi instead of
>       get_call_reg_set_usage.
> 
OK.  I think that's the whole set, right?

There were a ton of guality issues over the last couple weeks in the
tester, but those were somewhat expected due to a prior patchkit.  The
affected targets have new baseline results in my tester, so if anything
goes nuts as a result of your patches it should be fairly obvious.

Jeff

Reply via email to