public inbox for gcc-cvs@sourceware.org help / color / mirror / Atom feed
From: Marc Poulhi?s <dkm@gcc.gnu.org> To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-5028] ada: Flag renaming-as-spec as a body to inline Date: Thu, 5 Jan 2023 14:39:26 +0000 (GMT) [thread overview] Message-ID: <20230105143926.AF310384F00E@sourceware.org> (raw) https://gcc.gnu.org/g:9ff806899bfa38ade0bddbdfb413ca3444425bcf commit r13-5028-g9ff806899bfa38ade0bddbdfb413ca3444425bcf Author: Piotr Trojanek <trojanek@adacore.com> Date: Tue Dec 20 17:39:04 2022 +0100 ada: Flag renaming-as-spec as a body to inline For GNAT the frontend is only inlining subprograms with explicit specs, including specs completed with renaming-as-body. For GNATprove the frontend must also inline renamings acting as specs. Otherwise, we will try to build a body-to-inline with code that is can't handle unusual subprogram renamings, e.g. those of the form "object.call". gcc/ada/ * freeze.adb (Build_Renamed_Body): Rewrite subprogram renaming to subprogram declaration early and then set the Body_To_Inling flag. Diff: --- gcc/ada/freeze.adb | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb index a3ab685f5fc..0e55f146e28 100644 --- a/gcc/ada/freeze.adb +++ b/gcc/ada/freeze.adb @@ -473,6 +473,12 @@ package body Freeze is Set_Is_Overloaded (Call_Name, False); end if; + if Nkind (Decl) /= N_Subprogram_Declaration then + Rewrite (N, + Make_Subprogram_Declaration (Loc, + Specification => Specification (N))); + end if; + -- For simple renamings, subsequent calls can be expanded directly as -- calls to the renamed entity. The body must be generated in any case -- for calls that may appear elsewhere. This is not done in the case @@ -480,7 +486,6 @@ package body Freeze is -- body has not been built yet. if Ekind (Old_S) in E_Function | E_Procedure - and then Nkind (Decl) = N_Subprogram_Declaration and then not Is_Generic_Instance (Old_S) then Set_Body_To_Inline (Decl, Old_S); @@ -655,12 +660,6 @@ package body Freeze is Statements => New_List (Call_Node))); end if; - if Nkind (Decl) /= N_Subprogram_Declaration then - Rewrite (N, - Make_Subprogram_Declaration (Loc, - Specification => Specification (N))); - end if; - -- Link the body to the entity whose declaration it completes. If -- the body is analyzed when the renamed entity is frozen, it may -- be necessary to restore the proper scope (see package Exp_Ch13).
reply other threads:[~2023-01-05 14:39 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20230105143926.AF310384F00E@sourceware.org \ --to=dkm@gcc.gnu.org \ --cc=gcc-cvs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).