Remove the frame size argument from function_prologue/epilogue
Richard Biener
richard.guenther@gmail.com
Mon Aug 21 13:04:00 GMT 2017
On Mon, Aug 21, 2017 at 1:12 PM, Richard Sandiford
<richard.sandiford@linaro.org> wrote:
> Later patches will add support for frame sizes that are a run-time
> invariant but not a compile-time constant. This then raised the
> question of whether the frame size argument to the function_prologue/
> epilogue hooks should be updated accordingly.
>
> It turned out that only two targets actually used this argument, and
> even they got other frame-related information from the cached machine
> structure. This patch therefore removes the argument and makes the two
> targets use get_frame_size () instead.
>
> Tested on aarch64-linux-gnu and x86_64-linux-gnu, and by building
> one target per CPU and checking that there were no differences in
> assembly for the testsuite. OK to install?
Ok.
RIchard.
> Richard
>
>
> 2017-08-21 Richard Sandiford <richard.sandiford@linaro.org>
> Alan Hayward <alan.hayward@arm.com>
> David Sherwood <david.sherwood@arm.com>
>
> gcc/
> * target.def (function_prologue): Remove frame size argument.
> (function_epilogue): Likewise.
> * doc/tm.texi: Regenerate.
> * final.c (final_start_function): Update call to function_prologue.
> (final_end_function): Update call to function_epilogue.
> (default_function_pro_epilogue): Remove frame size argument.
> * output.h (default_function_pro_epilogue): Likewise.
> * config/arm/arm.c (arm_output_function_epilogue): Likewise.
> (arm_output_function_prologue): Likewise.
> * config/frv/frv.c (frv_function_prologue): Likewise.
> (frv_function_epilogue): Likewise.
> * config/i386/i386.c (ix86_output_function_epilogue): Likewise.
> * config/ia64/ia64.c (ia64_output_function_prologue): Likewise.
> (ia64_output_function_epilogue): Likewise.
> * config/m32r/m32r.c (m32r_output_function_prologue): Likewise.
> (m32r_output_function_epilogue): Likewise.
> * config/microblaze/microblaze.c (microblaze_function_prologue)
> (microblaze_function_epilogue): Likewise.
> * config/mips/mips.c (mips_output_function_prologue): Likewise.
> (mips_output_function_epilogue): Likewise.
> * config/mmix/mmix.c (mmix_target_asm_function_prologue): Likewise.
> (mmix_target_asm_function_epilogue): Likewise.
> * config/msp430/msp430.c (msp430_start_function): Likewise.
> * config/nds32/nds32.c (nds32_asm_function_prologue): Likewise.
> (nds32_asm_function_epilogue): Likewise.
> * config/nios2/nios2.c (nios2_asm_function_prologue): Likewise.
> * config/pa/pa.c (pa_output_function_prologue): Likewise.
> (pa_output_function_epilogue): Likewise.
> * config/powerpcspe/powerpcspe.c (rs6000_output_function_prologue)
> (rs6000_output_function_epilogue): Likewise.
> * config/rl78/rl78.c (rl78_start_function): Likewise.
> * config/rs6000/rs6000.c (rs6000_output_function_prologue): Likewise.
> (rs6000_output_function_epilogue): Likewise.
> * config/rx/rx.c (rx_output_function_prologue): Likewise.
> * config/sh/sh.c (sh_output_function_epilogue): Likewise.
> * config/sparc/sparc.c (sparc_asm_function_prologue): Likewise.
> (sparc_asm_function_epilogue): Likewise.
>
> Index: gcc/target.def
> ===================================================================
> --- gcc/target.def 2017-07-27 10:37:54.747032158 +0100
> +++ gcc/target.def 2017-08-21 11:54:34.198323780 +0100
> @@ -306,8 +306,8 @@ DEFHOOK
> function. The prologue is responsible for setting up the stack frame,\n\
> initializing the frame pointer register, saving registers that must be\n\
> saved, and allocating @var{size} additional bytes of storage for the\n\
> -local variables. @var{size} is an integer. @var{file} is a stdio\n\
> -stream to which the assembler code should be output.\n\
> +local variables. @var{file} is a stdio stream to which the assembler\n\
> +code should be output.\n\
> \n\
> The label for the beginning of the function need not be output by this\n\
> macro. That has already been done when the macro is run.\n\
> @@ -344,7 +344,7 @@ for a machine if doing so is more conven
> compatibility reasons. Except in cases where required by standard\n\
> or by a debugger, there is no reason why the stack layout used by GCC\n\
> need agree with that used by other compilers for a machine.",
> - void, (FILE *file, HOST_WIDE_INT size),
> + void, (FILE *file),
> default_function_pro_epilogue)
>
> /* Output the assembler code for end of prologue. */
> @@ -374,7 +374,7 @@ DEFHOOK
> function. The epilogue is responsible for restoring the saved\n\
> registers and stack pointer to their values when the function was\n\
> called, and returning control to the caller. This macro takes the\n\
> -same arguments as the macro @code{TARGET_ASM_FUNCTION_PROLOGUE}, and the\n\
> +same argument as the macro @code{TARGET_ASM_FUNCTION_PROLOGUE}, and the\n\
> registers to restore are determined from @code{regs_ever_live} and\n\
> @code{CALL_USED_REGISTERS} in the same way.\n\
> \n\
> @@ -414,7 +414,7 @@ functions pop their own arguments. @cod
> needs to know what was decided. The number of bytes of the current\n\
> function's arguments that this function should pop is available in\n\
> @code{crtl->args.pops_args}. @xref{Scalar Return}.",
> - void, (FILE *file, HOST_WIDE_INT size),
> + void, (FILE *file),
> default_function_pro_epilogue)
>
> /* Initialize target-specific sections. */
> Index: gcc/doc/tm.texi
> ===================================================================
> --- gcc/doc/tm.texi 2017-07-27 10:37:54.477029954 +0100
> +++ gcc/doc/tm.texi 2017-08-21 11:54:34.194323780 +0100
> @@ -4582,13 +4582,13 @@ of the hook places the table of pointers
> @code{__patchable_function_entries}.
> @end deftypefn
>
> -@deftypefn {Target Hook} void TARGET_ASM_FUNCTION_PROLOGUE (FILE *@var{file}, HOST_WIDE_INT @var{size})
> +@deftypefn {Target Hook} void TARGET_ASM_FUNCTION_PROLOGUE (FILE *@var{file})
> If defined, a function that outputs the assembler code for entry to a
> function. The prologue is responsible for setting up the stack frame,
> initializing the frame pointer register, saving registers that must be
> saved, and allocating @var{size} additional bytes of storage for the
> -local variables. @var{size} is an integer. @var{file} is a stdio
> -stream to which the assembler code should be output.
> +local variables. @var{file} is a stdio stream to which the assembler
> +code should be output.
>
> The label for the beginning of the function need not be output by this
> macro. That has already been done when the macro is run.
> @@ -4641,12 +4641,12 @@ emitted as RTL, and you have some extra
> emitted. @xref{epilogue instruction pattern}.
> @end deftypefn
>
> -@deftypefn {Target Hook} void TARGET_ASM_FUNCTION_EPILOGUE (FILE *@var{file}, HOST_WIDE_INT @var{size})
> +@deftypefn {Target Hook} void TARGET_ASM_FUNCTION_EPILOGUE (FILE *@var{file})
> If defined, a function that outputs the assembler code for exit from a
> function. The epilogue is responsible for restoring the saved
> registers and stack pointer to their values when the function was
> called, and returning control to the caller. This macro takes the
> -same arguments as the macro @code{TARGET_ASM_FUNCTION_PROLOGUE}, and the
> +same argument as the macro @code{TARGET_ASM_FUNCTION_PROLOGUE}, and the
> registers to restore are determined from @code{regs_ever_live} and
> @code{CALL_USED_REGISTERS} in the same way.
>
> Index: gcc/final.c
> ===================================================================
> --- gcc/final.c 2017-08-10 14:36:07.457492939 +0100
> +++ gcc/final.c 2017-08-21 11:54:34.195323780 +0100
> @@ -244,8 +244,7 @@ init_final (const char *filename ATTRIBU
> If not overridden for epilogue code, then the function body itself
> contains return instructions wherever needed. */
> void
> -default_function_pro_epilogue (FILE *file ATTRIBUTE_UNUSED,
> - HOST_WIDE_INT size ATTRIBUTE_UNUSED)
> +default_function_pro_epilogue (FILE *)
> {
> }
>
> @@ -1845,7 +1844,7 @@ final_start_function (rtx_insn *first, F
> }
>
> /* First output the function prologue: code to set up the stack frame. */
> - targetm.asm_out.function_prologue (file, get_frame_size ());
> + targetm.asm_out.function_prologue (file);
>
> /* If the machine represents the prologue as RTL, the profiling code must
> be emitted when NOTE_INSN_PROLOGUE_END is scanned. */
> @@ -1918,7 +1917,7 @@ final_end_function (void)
>
> /* Finally, output the function epilogue:
> code to restore the stack frame and return to the caller. */
> - targetm.asm_out.function_epilogue (asm_out_file, get_frame_size ());
> + targetm.asm_out.function_epilogue (asm_out_file);
>
> /* And debug output. */
> if (!DECL_IGNORED_P (current_function_decl))
> Index: gcc/output.h
> ===================================================================
> --- gcc/output.h 2017-07-13 09:25:13.139246592 +0100
> +++ gcc/output.h 2017-08-21 11:54:34.195323780 +0100
> @@ -355,7 +355,7 @@ extern int compute_reloc_for_constant (t
> extern const char *user_label_prefix;
>
> /* Default target function prologue and epilogue assembler output. */
> -extern void default_function_pro_epilogue (FILE *, HOST_WIDE_INT);
> +extern void default_function_pro_epilogue (FILE *);
>
> /* Default target function switched text sections. */
> extern void default_function_switched_text_sections (FILE *, tree, bool);
> Index: gcc/config/arm/arm.c
> ===================================================================
> --- gcc/config/arm/arm.c 2017-08-10 14:36:08.918440167 +0100
> +++ gcc/config/arm/arm.c 2017-08-21 11:54:34.126323780 +0100
> @@ -144,8 +144,8 @@ static tree arm_handle_notshared_attribu
> #endif
> static tree arm_handle_cmse_nonsecure_entry (tree *, tree, tree, int, bool *);
> static tree arm_handle_cmse_nonsecure_call (tree *, tree, tree, int, bool *);
> -static void arm_output_function_epilogue (FILE *, HOST_WIDE_INT);
> -static void arm_output_function_prologue (FILE *, HOST_WIDE_INT);
> +static void arm_output_function_epilogue (FILE *);
> +static void arm_output_function_prologue (FILE *);
> static int arm_comp_type_attributes (const_tree, const_tree);
> static void arm_set_default_type_attributes (tree);
> static int arm_adjust_cost (rtx_insn *, int, rtx_insn *, int, unsigned int);
> @@ -19699,7 +19699,7 @@ arm_poke_function_name (FILE *stream, co
> /* Place some comments into the assembler stream
> describing the current function. */
> static void
> -arm_output_function_prologue (FILE *f, HOST_WIDE_INT frame_size)
> +arm_output_function_prologue (FILE *f)
> {
> unsigned long func_type;
>
> @@ -19742,7 +19742,8 @@ arm_output_function_prologue (FILE *f, H
>
> asm_fprintf (f, "\t%@ args = %d, pretend = %d, frame = %wd\n",
> crtl->args.size,
> - crtl->args.pretend_args_size, frame_size);
> + crtl->args.pretend_args_size,
> + (HOST_WIDE_INT) get_frame_size ());
>
> asm_fprintf (f, "\t%@ frame_needed = %d, uses_anonymous_args = %d\n",
> frame_pointer_needed,
> @@ -19757,8 +19758,7 @@ arm_output_function_prologue (FILE *f, H
> }
>
> static void
> -arm_output_function_epilogue (FILE *file ATTRIBUTE_UNUSED,
> - HOST_WIDE_INT frame_size ATTRIBUTE_UNUSED)
> +arm_output_function_epilogue (FILE *)
> {
> arm_stack_offsets *offsets;
>
> Index: gcc/config/frv/frv.c
> ===================================================================
> --- gcc/config/frv/frv.c 2017-08-10 14:36:08.486455771 +0100
> +++ gcc/config/frv/frv.c 2017-08-21 11:54:34.127323780 +0100
> @@ -348,8 +348,8 @@ static void frv_reorg_packet (void);
> static void frv_register_nop (rtx);
> static void frv_reorg (void);
> static void frv_pack_insns (void);
> -static void frv_function_prologue (FILE *, HOST_WIDE_INT);
> -static void frv_function_epilogue (FILE *, HOST_WIDE_INT);
> +static void frv_function_prologue (FILE *);
> +static void frv_function_epilogue (FILE *);
> static bool frv_assemble_integer (rtx, unsigned, int);
> static void frv_init_builtins (void);
> static rtx frv_expand_builtin (tree, rtx, rtx, machine_mode, int);
> @@ -1401,7 +1401,7 @@ frv_function_contains_far_jump (void)
> will return correctly. It also does the VLIW packing. */
>
> static void
> -frv_function_prologue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
> +frv_function_prologue (FILE *file)
> {
> rtx_insn *insn, *next, *last_call;
>
> @@ -1841,8 +1841,7 @@ frv_expand_prologue (void)
> this function provides a convenient place to do cleanup. */
>
> static void
> -frv_function_epilogue (FILE *file ATTRIBUTE_UNUSED,
> - HOST_WIDE_INT size ATTRIBUTE_UNUSED)
> +frv_function_epilogue (FILE *)
> {
> frv_stack_cache = (frv_stack_t *)0;
>
> Index: gcc/config/i386/i386.c
> ===================================================================
> --- gcc/config/i386/i386.c 2017-08-21 10:42:05.840552331 +0100
> +++ gcc/config/i386/i386.c 2017-08-21 11:54:34.146323780 +0100
> @@ -15677,7 +15677,7 @@ ix86_expand_epilogue (int style)
> /* Reset from the function's potential modifications. */
>
> static void
> -ix86_output_function_epilogue (FILE *file ATTRIBUTE_UNUSED, HOST_WIDE_INT)
> +ix86_output_function_epilogue (FILE *file ATTRIBUTE_UNUSED)
> {
> if (pic_offset_table_rtx
> && !ix86_use_pseudo_pic_reg ())
> Index: gcc/config/ia64/ia64.c
> ===================================================================
> --- gcc/config/ia64/ia64.c 2017-08-10 14:36:08.784445008 +0100
> +++ gcc/config/ia64/ia64.c 2017-08-21 11:54:34.147323780 +0100
> @@ -233,8 +233,8 @@ static bool ia64_in_small_data_p (const_
> static void process_epilogue (FILE *, rtx, bool, bool);
>
> static bool ia64_assemble_integer (rtx, unsigned int, int);
> -static void ia64_output_function_prologue (FILE *, HOST_WIDE_INT);
> -static void ia64_output_function_epilogue (FILE *, HOST_WIDE_INT);
> +static void ia64_output_function_prologue (FILE *);
> +static void ia64_output_function_epilogue (FILE *);
> static void ia64_output_function_end_prologue (FILE *);
>
> static void ia64_print_operand (FILE *, rtx, int);
> @@ -4278,7 +4278,7 @@ ia64_assemble_integer (rtx x, unsigned i
> /* Emit the function prologue. */
>
> static void
> -ia64_output_function_prologue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
> +ia64_output_function_prologue (FILE *file)
> {
> int mask, grsave, grsave_prev;
>
> @@ -4356,8 +4356,7 @@ ia64_output_function_end_prologue (FILE
> /* Emit the function epilogue. */
>
> static void
> -ia64_output_function_epilogue (FILE *file ATTRIBUTE_UNUSED,
> - HOST_WIDE_INT size ATTRIBUTE_UNUSED)
> +ia64_output_function_epilogue (FILE *)
> {
> int i;
>
> Index: gcc/config/m32r/m32r.c
> ===================================================================
> --- gcc/config/m32r/m32r.c 2017-08-10 14:36:08.532454110 +0100
> +++ gcc/config/m32r/m32r.c 2017-08-21 11:54:34.148323780 +0100
> @@ -70,8 +70,8 @@ static tree m32r_handle_model_attribute
> static void m32r_print_operand (FILE *, rtx, int);
> static void m32r_print_operand_address (FILE *, machine_mode, rtx);
> static bool m32r_print_operand_punct_valid_p (unsigned char code);
> -static void m32r_output_function_prologue (FILE *, HOST_WIDE_INT);
> -static void m32r_output_function_epilogue (FILE *, HOST_WIDE_INT);
> +static void m32r_output_function_prologue (FILE *);
> +static void m32r_output_function_epilogue (FILE *);
>
> static void m32r_file_start (void);
>
> @@ -1744,7 +1744,7 @@ m32r_expand_prologue (void)
> m32r_compute_frame_size which calculates the prolog size. */
>
> static void
> -m32r_output_function_prologue (FILE * file, HOST_WIDE_INT size)
> +m32r_output_function_prologue (FILE * file)
> {
> enum m32r_function_type fn_type = m32r_compute_function_type (current_function_decl);
>
> @@ -1753,7 +1753,7 @@ m32r_output_function_prologue (FILE * fi
> fprintf (file, "\t%s interrupt handler\n", ASM_COMMENT_START);
>
> if (! current_frame_info.initialized)
> - m32r_compute_frame_size (size);
> + m32r_compute_frame_size (get_frame_size ());
>
> /* This is only for the human reader. */
> fprintf (file,
> @@ -1880,8 +1880,7 @@ m32r_expand_epilogue (void)
> and regs. */
>
> static void
> -m32r_output_function_epilogue (FILE * file ATTRIBUTE_UNUSED,
> - HOST_WIDE_INT size ATTRIBUTE_UNUSED)
> +m32r_output_function_epilogue (FILE *)
> {
> /* Reset state info for each function. */
> current_frame_info = zero_frame_info;
> Index: gcc/config/microblaze/microblaze.c
> ===================================================================
> --- gcc/config/microblaze/microblaze.c 2017-08-10 14:36:08.685448583 +0100
> +++ gcc/config/microblaze/microblaze.c 2017-08-21 11:54:34.149323780 +0100
> @@ -2659,7 +2659,7 @@ save_restore_insns (int prologue)
>
> /* Set up the stack and frame (if desired) for the function. */
> static void
> -microblaze_function_prologue (FILE * file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
> +microblaze_function_prologue (FILE * file)
> {
> const char *fnname;
> long fsiz = current_frame_info.total_size;
> @@ -2955,8 +2955,7 @@ #define RA_MASK ((long) 0x80000000) /* 1
> #define PIC_OFFSET_TABLE_MASK (1 << (PIC_OFFSET_TABLE_REGNUM - GP_REG_FIRST))
>
> static void
> -microblaze_function_epilogue (FILE * file ATTRIBUTE_UNUSED,
> - HOST_WIDE_INT size ATTRIBUTE_UNUSED)
> +microblaze_function_epilogue (FILE *file)
> {
> const char *fnname;
>
> Index: gcc/config/mips/mips.c
> ===================================================================
> --- gcc/config/mips/mips.c 2017-08-10 14:36:08.949439048 +0100
> +++ gcc/config/mips/mips.c 2017-08-21 11:54:34.151323780 +0100
> @@ -11722,7 +11722,7 @@ mips_output_cplocal (void)
> /* Implement TARGET_OUTPUT_FUNCTION_PROLOGUE. */
>
> static void
> -mips_output_function_prologue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
> +mips_output_function_prologue (FILE *file)
> {
> const char *fnname;
>
> @@ -11817,8 +11817,7 @@ mips_output_function_prologue (FILE *fil
> /* Implement TARGET_OUTPUT_FUNCTION_EPILOGUE. */
>
> static void
> -mips_output_function_epilogue (FILE *file ATTRIBUTE_UNUSED,
> - HOST_WIDE_INT size ATTRIBUTE_UNUSED)
> +mips_output_function_epilogue (FILE *)
> {
> const char *fnname;
>
> Index: gcc/config/mmix/mmix.c
> ===================================================================
> --- gcc/config/mmix/mmix.c 2017-08-10 14:36:08.995437386 +0100
> +++ gcc/config/mmix/mmix.c 2017-08-21 11:54:34.151323780 +0100
> @@ -127,9 +127,9 @@ static struct machine_function *mmix_ini
> static void mmix_encode_section_info (tree, rtx, int);
> static const char *mmix_strip_name_encoding (const char *);
> static void mmix_emit_sp_add (HOST_WIDE_INT offset);
> -static void mmix_target_asm_function_prologue (FILE *, HOST_WIDE_INT);
> +static void mmix_target_asm_function_prologue (FILE *);
> static void mmix_target_asm_function_end_prologue (FILE *);
> -static void mmix_target_asm_function_epilogue (FILE *, HOST_WIDE_INT);
> +static void mmix_target_asm_function_epilogue (FILE *);
> static reg_class_t mmix_preferred_reload_class (rtx, reg_class_t);
> static reg_class_t mmix_preferred_output_reload_class (rtx, reg_class_t);
> static bool mmix_legitimate_address_p (machine_mode, rtx, bool);
> @@ -821,8 +821,7 @@ mmix_asm_preferred_eh_data_format (int c
> mmix_reorg. */
>
> static void
> -mmix_target_asm_function_prologue (FILE *stream ATTRIBUTE_UNUSED,
> - HOST_WIDE_INT framesize ATTRIBUTE_UNUSED)
> +mmix_target_asm_function_prologue (FILE *)
> {
> cfun->machine->in_prologue = 1;
> }
> @@ -880,8 +879,7 @@ mmix_reorg (void)
> /* TARGET_ASM_FUNCTION_EPILOGUE. */
>
> static void
> -mmix_target_asm_function_epilogue (FILE *stream,
> - HOST_WIDE_INT locals_size ATTRIBUTE_UNUSED)
> +mmix_target_asm_function_epilogue (FILE *stream)
> {
> /* Emit an \n for readability of the generated assembly. */
> fputc ('\n', stream);
> Index: gcc/config/msp430/msp430.c
> ===================================================================
> --- gcc/config/msp430/msp430.c 2017-08-10 14:36:08.964438506 +0100
> +++ gcc/config/msp430/msp430.c 2017-08-21 11:54:34.152323780 +0100
> @@ -2059,7 +2059,7 @@ const struct attribute_spec msp430_attri
> #define TARGET_ASM_FUNCTION_PROLOGUE msp430_start_function
>
> static void
> -msp430_start_function (FILE *outfile, HOST_WIDE_INT hwi_local ATTRIBUTE_UNUSED)
> +msp430_start_function (FILE *outfile)
> {
> int r, n;
>
> Index: gcc/config/nds32/nds32.c
> ===================================================================
> --- gcc/config/nds32/nds32.c 2017-08-10 14:36:08.706447825 +0100
> +++ gcc/config/nds32/nds32.c 2017-08-21 11:54:34.153323780 +0100
> @@ -1502,8 +1502,7 @@ nds32_function_value_regno_p (const unsi
> /* The content produced from this function
> will be placed before prologue body. */
> static void
> -nds32_asm_function_prologue (FILE *file,
> - HOST_WIDE_INT size ATTRIBUTE_UNUSED)
> +nds32_asm_function_prologue (FILE *file)
> {
> int r;
> const char *func_name;
> @@ -1620,8 +1619,7 @@ nds32_asm_function_begin_epilogue (FILE
> /* The content produced from this function
> will be placed after epilogue body. */
> static void
> -nds32_asm_function_epilogue (FILE *file,
> - HOST_WIDE_INT size ATTRIBUTE_UNUSED)
> +nds32_asm_function_epilogue (FILE *file)
> {
> fprintf (file, "\t! END EPILOGUE\n");
> }
> Index: gcc/config/nios2/nios2.c
> ===================================================================
> --- gcc/config/nios2/nios2.c 2017-08-10 14:36:08.742446525 +0100
> +++ gcc/config/nios2/nios2.c 2017-08-21 11:54:34.154323780 +0100
> @@ -2800,7 +2800,7 @@ nios2_asm_file_end (void)
>
> /* Implement TARGET_ASM_FUNCTION_PROLOGUE. */
> static void
> -nios2_asm_function_prologue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
> +nios2_asm_function_prologue (FILE *file)
> {
> if (flag_verbose_asm || flag_debug_asm)
> {
> Index: gcc/config/pa/pa.c
> ===================================================================
> --- gcc/config/pa/pa.c 2017-08-10 14:36:08.929439770 +0100
> +++ gcc/config/pa/pa.c 2017-08-21 11:54:34.157323780 +0100
> @@ -116,9 +116,9 @@ static void set_reg_plus_d (int, int, HO
> static rtx pa_function_value (const_tree, const_tree, bool);
> static rtx pa_libcall_value (machine_mode, const_rtx);
> static bool pa_function_value_regno_p (const unsigned int);
> -static void pa_output_function_prologue (FILE *, HOST_WIDE_INT);
> +static void pa_output_function_prologue (FILE *);
> static void update_total_code_bytes (unsigned int);
> -static void pa_output_function_epilogue (FILE *, HOST_WIDE_INT);
> +static void pa_output_function_epilogue (FILE *);
> static int pa_adjust_cost (rtx_insn *, int, rtx_insn *, int, unsigned int);
> static int pa_adjust_priority (rtx_insn *, int);
> static int pa_issue_rate (void);
> @@ -3822,15 +3822,6 @@ pa_compute_frame_size (HOST_WIDE_INT siz
> & ~(PREFERRED_STACK_BOUNDARY / BITS_PER_UNIT - 1));
> }
>
> -/* Generate the assembly code for function entry. FILE is a stdio
> - stream to output the code to. SIZE is an int: how many units of
> - temporary storage to allocate.
> -
> - Refer to the array `regs_ever_live' to determine which registers to
> - save; `regs_ever_live[I]' is nonzero if register number I is ever
> - used in the function. This function is responsible for knowing
> - which registers should not be saved even if used. */
> -
> /* On HP-PA, move-double insns between fpu and cpu need an 8-byte block
> of memory. If any fpu reg is used in the function, we allocate
> such a block here, at the bottom of the frame, just in case it's needed.
> @@ -3840,7 +3831,7 @@ pa_compute_frame_size (HOST_WIDE_INT siz
> to do this is made in regclass.c. */
>
> static void
> -pa_output_function_prologue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
> +pa_output_function_prologue (FILE *file)
> {
> /* The function's label and associated .PROC must never be
> separated and must be output *after* any profiling declarations
> @@ -4254,7 +4245,7 @@ update_total_code_bytes (unsigned int nb
> adjustments before returning. */
>
> static void
> -pa_output_function_epilogue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
> +pa_output_function_epilogue (FILE *file)
> {
> rtx_insn *insn = get_last_insn ();
> bool extra_nop;
> Index: gcc/config/powerpcspe/powerpcspe.c
> ===================================================================
> --- gcc/config/powerpcspe/powerpcspe.c 2017-08-10 14:36:08.676448909 +0100
> +++ gcc/config/powerpcspe/powerpcspe.c 2017-08-21 11:54:34.172323780 +0100
> @@ -30599,8 +30599,7 @@ rs6000_output_savres_externs (FILE *file
> /* Write function prologue. */
>
> static void
> -rs6000_output_function_prologue (FILE *file,
> - HOST_WIDE_INT size ATTRIBUTE_UNUSED)
> +rs6000_output_function_prologue (FILE *file)
> {
> if (!cfun->is_thunk)
> rs6000_output_savres_externs (file);
> @@ -31790,8 +31789,7 @@ rs6000_emit_epilogue (int sibcall)
> /* Write function epilogue. */
>
> static void
> -rs6000_output_function_epilogue (FILE *file,
> - HOST_WIDE_INT size ATTRIBUTE_UNUSED)
> +rs6000_output_function_epilogue (FILE *file)
> {
> #if TARGET_MACHO
> macho_branch_islands ();
> Index: gcc/config/rl78/rl78.c
> ===================================================================
> --- gcc/config/rl78/rl78.c 2017-08-10 14:36:08.971438253 +0100
> +++ gcc/config/rl78/rl78.c 2017-08-21 11:54:34.173323780 +0100
> @@ -1553,7 +1553,7 @@ #define TARGET_ASM_FUNCTION_PROLOGUE rl7
> this to insert a comment in the asm file describing the
> function. */
> static void
> -rl78_start_function (FILE *file, HOST_WIDE_INT hwi_local ATTRIBUTE_UNUSED)
> +rl78_start_function (FILE *file)
> {
> int i;
>
> Index: gcc/config/rs6000/rs6000.c
> ===================================================================
> --- gcc/config/rs6000/rs6000.c 2017-08-21 10:42:06.081463068 +0100
> +++ gcc/config/rs6000/rs6000.c 2017-08-21 11:54:34.182323780 +0100
> @@ -27569,8 +27569,7 @@ rs6000_output_savres_externs (FILE *file
> /* Write function prologue. */
>
> static void
> -rs6000_output_function_prologue (FILE *file,
> - HOST_WIDE_INT size ATTRIBUTE_UNUSED)
> +rs6000_output_function_prologue (FILE *file)
> {
> if (!cfun->is_thunk)
> rs6000_output_savres_externs (file);
> @@ -28694,8 +28693,7 @@ rs6000_emit_epilogue (int sibcall)
> /* Write function epilogue. */
>
> static void
> -rs6000_output_function_epilogue (FILE *file,
> - HOST_WIDE_INT size ATTRIBUTE_UNUSED)
> +rs6000_output_function_epilogue (FILE *file)
> {
> #if TARGET_MACHO
> macho_branch_islands ();
> Index: gcc/config/rx/rx.c
> ===================================================================
> --- gcc/config/rx/rx.c 2017-08-10 14:36:08.540453821 +0100
> +++ gcc/config/rx/rx.c 2017-08-21 11:54:34.183323780 +0100
> @@ -1888,8 +1888,7 @@ add_vector_labels (FILE *file, const cha
> }
>
> static void
> -rx_output_function_prologue (FILE * file,
> - HOST_WIDE_INT frame_size ATTRIBUTE_UNUSED)
> +rx_output_function_prologue (FILE * file)
> {
> add_vector_labels (file, "interrupt");
> add_vector_labels (file, "vector");
> Index: gcc/config/sh/sh.c
> ===================================================================
> --- gcc/config/sh/sh.c 2017-08-10 14:36:08.640450209 +0100
> +++ gcc/config/sh/sh.c 2017-08-21 11:54:34.186323780 +0100
> @@ -211,7 +211,7 @@ static void sh_print_operand (FILE *, rt
> static void sh_print_operand_address (FILE *, machine_mode, rtx);
> static bool sh_print_operand_punct_valid_p (unsigned char code);
> static bool sh_asm_output_addr_const_extra (FILE *file, rtx x);
> -static void sh_output_function_epilogue (FILE *, HOST_WIDE_INT);
> +static void sh_output_function_epilogue (FILE *);
> static void sh_insert_attributes (tree, tree *);
> static const char *sh_check_pch_target_flags (int);
> static int sh_register_move_cost (machine_mode, reg_class_t, reg_class_t);
> @@ -7350,8 +7350,7 @@ sh_set_return_address (rtx ra, rtx tmp)
>
> /* Clear variables at function end. */
> static void
> -sh_output_function_epilogue (FILE *file ATTRIBUTE_UNUSED,
> - HOST_WIDE_INT size ATTRIBUTE_UNUSED)
> +sh_output_function_epilogue (FILE *)
> {
> }
>
> Index: gcc/config/sparc/sparc.c
> ===================================================================
> --- gcc/config/sparc/sparc.c 2017-08-10 14:36:08.527454290 +0100
> +++ gcc/config/sparc/sparc.c 2017-08-21 11:54:34.189323780 +0100
> @@ -585,8 +585,8 @@ static rtx sparc_builtin_saveregs (void)
> static int epilogue_renumber (rtx *, int);
> static bool sparc_assemble_integer (rtx, unsigned int, int);
> static int set_extends (rtx_insn *);
> -static void sparc_asm_function_prologue (FILE *, HOST_WIDE_INT);
> -static void sparc_asm_function_epilogue (FILE *, HOST_WIDE_INT);
> +static void sparc_asm_function_prologue (FILE *);
> +static void sparc_asm_function_epilogue (FILE *);
> #ifdef TARGET_SOLARIS
> static void sparc_solaris_elf_asm_named_section (const char *, unsigned int,
> tree) ATTRIBUTE_UNUSED;
> @@ -5911,7 +5911,7 @@ sparc_flat_expand_prologue (void)
> down to emitting the necessary .register directives. */
>
> static void
> -sparc_asm_function_prologue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
> +sparc_asm_function_prologue (FILE *file)
> {
> /* Check that the assumption we made in sparc_expand_prologue is valid. */
> if (!TARGET_FLAT)
> @@ -6033,7 +6033,7 @@ sparc_can_use_return_insn_p (void)
> /* This function generates the assembly code for function exit. */
>
> static void
> -sparc_asm_function_epilogue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
> +sparc_asm_function_epilogue (FILE *file)
> {
> /* If the last two instructions of a function are "call foo; dslot;"
> the return address might point to the first instruction in the next
More information about the Gcc-patches
mailing list