Remove global REG_SETs

Jeff Law law@redhat.com
Mon Sep 9 17:48:00 GMT 2019


On 9/9/19 10:37 AM, Richard Sandiford wrote:
> [Follows on from https://gcc.gnu.org/ml/gcc-patches/2019-09/msg00571.html]
> 
> We currently maintain global REG_SET versions of fixed_reg_set
> and regs_invalidated_by_call.  With bitmap_view, we can instead
> operate directly on the underlying HARD_REG_SETs, avoiding the
> need to keep the two pieces of data in sync.
> 
> I have a series of patches that removes the assumption that there's
> a single global ABI for all functions in the translation unit,
> which includes not relying on having a global regs_invalidated_by_call.
> Removing the REG_SET equivalent is one step to doing that.
> 
> Note that the affected DF code is used for EH edges or dumping only,
> so shouldn't be performance critical.
> 
> Tested on aarch64-linux-gnu and x86_64-linux-gnu.  Also tested on an
> sh-linux-gnu cross and comparing the assembly output for gcc.c-torture,
> gcc.dg and g++.dg.  OK to install?
> 
> Richard
> 
> 
> 2019-09-09  Richard Sandiford  <richard.sandiford@arm.com>
> 
> gcc/
> 	* regset.h (regs_invalidated_by_call_regset): Delete.
> 	(fixed_reg_set_regset): Likewise.
> 	* reginfo.c (regs_invalidated_by_call_regset): Likewise.
> 	(fixed_reg_set_regset, persistent_obstack): Likewise.
> 	(init_reg_sets_1, globalize_reg): Update accordingly.
> 	* df.h (df_print_regset, df_print_word_regset): Take a const_bitmap
> 	instead of a bitmap.
> 	* df-core.c (df_print_regset, df_print_word_regset): Likewise.
> 	* df-problems.c (df_rd_local_compute): Use regs_invalidated_by_call
> 	instead of regs_invalidated_by_call_regset.
> 	(df_lr_confluence_n, df_md_confluence_n): Likewise.
> 	* df-scan.c (df_scan_start_dump): Likewise.
> 	* dse.c (copy_fixed_regs): Likewise.
> 	* config/sh/sh.c (sh_find_equiv_gbr_addr): Likewise.
> 
OK
jeff



More information about the Gcc-patches mailing list