This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [01/32] Add function_abi.{h,cc}
- From: Jeff Law <law at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org, richard dot sandiford at arm dot com
- Date: Sun, 29 Sep 2019 14:50:58 -0600
- Subject: Re: [01/32] Add function_abi.{h,cc}
- References: <mptimpyzmf1.fsf@arm.com> <mptef0mzmdg.fsf@arm.com>
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