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