From patchwork Mon Aug 21 11:12:07 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Sandiford X-Patchwork-Id: 110516 Delivered-To: patch@linaro.org Received: by 10.140.95.78 with SMTP id h72csp1125222qge; Mon, 21 Aug 2017 04:12:41 -0700 (PDT) X-Received: by 10.84.132.74 with SMTP id 68mr19474441ple.179.1503313961202; Mon, 21 Aug 2017 04:12:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1503313961; cv=none; d=google.com; s=arc-20160816; b=C+J7ze66SYKqJEPshKx0YJKS5mEZdMdimZfGgDP184CBWZW+1ffhFuNHvSLECQPPS6 Ny48qeOeqcS+I3E+RRFnBhZ04ER93IhJkoS+OgD9YAq6FpvN/tBrcPiGAgY8+BX2xaHu QK3DGOKPgk//a626M43W2VTo74hEOHFZm4TKgSBvLfze+FuLFkhLdgihPQ9cC0LSnvB4 /ycRJhBuqkqb3kHcPgp1RFMrl8VlBE4eg6YYEJk7nHNyGqlFe7vycjlTiP9uKJU79+EZ REXGpmoBmgNdfuYgYJ/iPOUyQvVqA10688eyPSblKiSO7Bn23WUwx9fLdp2DBhZoEHeM 3ebQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:user-agent:message-id:date:subject:mail-followup-to:to :from:delivered-to:sender:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:mailing-list:dkim-signature :domainkey-signature:arc-authentication-results; bh=fxN5Sl3Llpbj0azK+ZaVwKM1cjenAha1aJu/TtkNQUA=; b=X9F+VAWsS3a13xkbj+cN3gf4s7oHdADnkDYhoixeYrQGdMnzenLigPN8+c/0HATLY7 OM4wWnYG0Zr2TyKXsNVN3qYEPkK2ANL+y/JJj94x6U0FvBi6Cz03sPfYLnKXoUBhn5HA /r5gP3vDKy/4s3i3OYXPZRJYN6tNDHo0RVBenyQ0qS+d39YgY3WZxmm5it/GqJJdtWdR y3r3RUx9c0/t/WyH8VuJvZE7T87q2x9FmhdTdOWbTCS7PpHghgw9S1nMrEFgW6rP1pl6 DjU1Q61RqsRVBTrpYqzR3eDTPzpxfQN490THAz2jbxt4x4C+2UawgLmEt4y1ObArE0c4 H9xA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=vFIuppcs; spf=pass (google.com: domain of gcc-patches-return-460630-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=gcc-patches-return-460630-patch=linaro.org@gcc.gnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id 3si2977669plf.276.2017.08.21.04.12.40 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Aug 2017 04:12:41 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-return-460630-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=vFIuppcs; spf=pass (google.com: domain of gcc-patches-return-460630-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=gcc-patches-return-460630-patch=linaro.org@gcc.gnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:subject:date:message-id:mime-version:content-type; q=dns; s= default; b=sT40b8mUGHR2GD76D65aITXCnMqB3mCqNR03p+giF1fJKuyXncWLl p1ddFoqj7zqlyVpaSQ/PUwpr8IlP/cVwKJttb5nN0dy2VX7HAimE98Z558nchhfb uEIjmyvJIq0RKArITHBrtfvg7b+TSbWDl5DhlPftW3AGgKNu3RsWpc= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:subject:date:message-id:mime-version:content-type; s= default; bh=pOaZkMqY/Avo5qiAlcEX+K7+AcA=; b=vFIuppcsLFrr/cistL7D mKkIiKp+cQxT2mis0cBm4UpiVwjCu8eadbZ1NgJsMdqBgNwJSVXoQxoE46SUzQVR L6cQLstT//o5KwRaQyFjuTgrK1Y/wPwVZ4iIqFbLv32ba+FSRSl9AbywrHsv+JMF gbb13HJ7GLJrbXLKPnDdpIE= Received: (qmail 33779 invoked by alias); 21 Aug 2017 11:12:24 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 33695 invoked by uid 89); 21 Aug 2017 11:12:18 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-9.2 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_2, GIT_PATCH_3, KAM_ASCII_DIVIDERS, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, RCVD_IN_SORBS_WEB, SPF_PASS autolearn=ham version=3.3.2 spammy=cod, wherever X-HELO: mail-wr0-f176.google.com Received: from mail-wr0-f176.google.com (HELO mail-wr0-f176.google.com) (209.85.128.176) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 21 Aug 2017 11:12:13 +0000 Received: by mail-wr0-f176.google.com with SMTP id k46so21215553wre.2 for ; Mon, 21 Aug 2017 04:12:13 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:mail-followup-to:subject:date:message-id :user-agent:mime-version; bh=fxN5Sl3Llpbj0azK+ZaVwKM1cjenAha1aJu/TtkNQUA=; b=Y7wu1/G+IqsF4z0qQymWVLrY/MxtJ74R7dzj7TnBtv9RERLSO0vj77OO20zu14DLO3 oW6WHHLpSw45shaFkHJAuxKGgCuPgT1ixzkDkL0Dqh+jbmBFwwUruLjAfqKkaN/n7RUV ttzSeWzrH2Sz8nKF9+xO+rGM1GerMsplv6QI54Y6GUHHvPz6FfIus+7JxEX/5Wb1KnmI Jowu9ghkuqEwc3qPDmiLPZIFvYz2UllKY/brdnckjn6Tsr7GiTZJzHtGSm77jP8iIgAV JK1+pbqba/wn3d+627UOYEd+b1cDKcrve29RvgmMc6EmoiqfDxfo+uvj5tNr+JKPqhF+ GKdA== X-Gm-Message-State: AHYfb5gXYIQFHggkhAC3zkoMkZLcWHlrRSIfraEhUO9qsy+Y9mYK1kUR DbiY+ChlK7o3SJIcxzBLfA== X-Received: by 10.223.175.202 with SMTP id y10mr6430863wrd.257.1503313930621; Mon, 21 Aug 2017 04:12:10 -0700 (PDT) Received: from localhost (92.40.248.206.threembb.co.uk. [92.40.248.206]) by smtp.gmail.com with ESMTPSA id k79sm3025171wmg.21.2017.08.21.04.12.09 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 21 Aug 2017 04:12:09 -0700 (PDT) From: Richard Sandiford To: gcc-patches@gcc.gnu.org Mail-Followup-To: gcc-patches@gcc.gnu.org, richard.sandiford@linaro.org Subject: Remove the frame size argument from function_prologue/epilogue Date: Mon, 21 Aug 2017 12:12:07 +0100 Message-ID: <878tiddvjs.fsf@linaro.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) MIME-Version: 1.0 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? Richard 2017-08-21 Richard Sandiford Alan Hayward David Sherwood 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