Remove global call sets: DF (entry/exit defs)
The code patched here is seeing whether the current function needs to save at least part of a register before using it. 2019-09-30 Richard Sandiford <richard.sandiford@arm.com> gcc/ * df-scan.c (df_get_entry_block_def_set): Use crtl->abi to test whether the current function needs to save at least part of a register before using it. (df_get_exit_block_use_set): Likewise for epilogue restores. From-SVN: r276320
This commit is contained in:
parent
c92503717b
commit
559c1ae100
|
@ -1,3 +1,10 @@
|
|||
2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
|
||||
|
||||
* df-scan.c (df_get_entry_block_def_set): Use crtl->abi to test
|
||||
whether the current function needs to save at least part of a
|
||||
register before using it.
|
||||
(df_get_exit_block_use_set): Likewise for epilogue restores.
|
||||
|
||||
2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
|
||||
|
||||
* df-problems.c: Include regs.h and function-abi.h.
|
||||
|
|
|
@ -3499,7 +3499,9 @@ df_get_entry_block_def_set (bitmap entry_block_defs)
|
|||
/* Defs for the callee saved registers are inserted so that the
|
||||
pushes have some defining location. */
|
||||
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
|
||||
if ((call_used_or_fixed_reg_p (i) == 0) && (df_regs_ever_live_p (i)))
|
||||
if (!crtl->abi->clobbers_full_reg_p (i)
|
||||
&& !fixed_regs[i]
|
||||
&& df_regs_ever_live_p (i))
|
||||
bitmap_set_bit (entry_block_defs, i);
|
||||
}
|
||||
|
||||
|
@ -3672,8 +3674,9 @@ df_get_exit_block_use_set (bitmap exit_block_uses)
|
|||
{
|
||||
/* Mark all call-saved registers that we actually used. */
|
||||
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
|
||||
if (df_regs_ever_live_p (i) && !LOCAL_REGNO (i)
|
||||
&& !TEST_HARD_REG_BIT (regs_invalidated_by_call, i))
|
||||
if (df_regs_ever_live_p (i)
|
||||
&& !LOCAL_REGNO (i)
|
||||
&& !crtl->abi->clobbers_full_reg_p (i))
|
||||
bitmap_set_bit (exit_block_uses, i);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue