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.sandif...@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