This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [01/32] Add function_abi.{h,cc}


On 9/11/19 1:03 PM, Richard Sandiford wrote:
> This patch adds new structures and functions for handling
> multiple ABIs in a translation unit.  The structures are:
> 
> - predefined_function_abi: describes a static, predefined ABI
> - function_abi: describes either a predefined ABI or a local
>   variant of one (e.g. taking -fipa-ra into account)
> 
> The patch adds functions for getting the ABI from a given type
> or decl; a later patch will also add a function for getting the
> ABI of the target of a call insn.
> 
> Although ABIs are about much more than call-clobber/saved choices,
> I wanted to keep the name general in case we add more ABI-related
> information in future.
> 
> 
> 2019-09-11  Richard Sandiford  <richard.sandiford@arm.com>
> 
> gcc/
> 	* Makefile.in (OBJS): Add function-abi.o.
> 	(GTFILES): Add function-abi.h.
> 	* function-abi.cc: New file.
> 	* function-abi.h: Likewise.
> 	* emit-rtl.h (rtl_data::abi): New field.
> 	* function.c: Include function-abi.h.
> 	(prepare_function_start): Initialize crtl->abi.
> 	* read-rtl-function.c: Include regs.h and function-abi.h.
> 	(read_rtl_function_body): Initialize crtl->abi.
> 	(read_rtl_function_body_from_file_range): Likewise.
> 	* reginfo.c: Include function-abi.h.
> 	(init_reg_sets_1): Initialize default_function_abi.
> 	(globalize_reg): Call add_full_reg_clobber for each predefined ABI
> 	when making a register global.
> 	* target-globals.h (this_target_function_abi_info): Declare.
> 	(target_globals::function_abi_info): New field.
> 	(restore_target_globals): Copy it.
> 	* target-globals.c: Include function-abi.h.
> 	(default_target_globals): Initialize the function_abi_info field.
> 	(target_globals): Allocate it.
> 	(save_target_globals): Free it.
So no problem with this as-is.  Questions though:

1. Do we need to stream this information for LTO?

2. Do we need to support it for the RTL front-end, even if primarily for
testing purposes?

These may show up in later patches, if so safely assume that I'll get to
them soon enough :-)

jeff


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]