On 2019-09-25 12:20 p.m., Richard Sandiford wrote:
[This follows on from: https://gcc.gnu.org/ml/gcc-patches/2019-09/msg00778.html] If we support multiple ABIs in the same translation unit, it can sometimes be the case that a callee clobbers more registers than its caller is allowed to. We need to call df_set_regs_ever_live on these extra registers so that the prologue and epilogue code can handle them appropriately. This patch does that in IRA. I wanted to avoid another full instruction walk just for this, so I combined it with the existing set_paradoxical_subreg walk. This happens before the first calculation of elimination offsets.
It is a reasonable decision.
Tested on aarch64-linux-gnu (where with later patches it helps the vector PCS) and x86_64-linux-gnu (where it's a no-op). OK to install?
Sure. Thank you, Richard.
2019-09-25 Richard Sandiford <richard.sandif...@arm.com> gcc/ * function-abi.h (function_abi_aggregator): New class. * function-abi.cc (function_abi_aggregator::caller_save_regs): New function. * ira.c (update_equiv_regs_prescan): New function. Call set_paradoxical_subreg here rather than... (update_equiv_regs): ...here. (ira): Call update_equiv_regs_prescan.