From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2100) id 2E613385DC14; Sat, 22 Aug 2020 21:51:00 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2E613385DC14 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1598133060; bh=nx4mQAW+FZk7aCn5sSqmZTvUIAbZKFTWh+vS9LdsmWs=; h=From:To:Subject:Date:From; b=KOMBM9HD/VVouhMM/zZTzyhtmvF0nXoMr7EnWmvqNT2F6j4kH8jWOmERFQ4IwM2ob BV25C/xTORV+tSSVCQxsiDl9EGKcpNrvo+Xc36ixcZ67/xLwgfkpnSTDz/4nak0u3u Q0cPYCyyo62EHn+B28jnsIn2y1a7c/iiXunFmRfQ= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Giuliano Belinassi To: gcc-cvs@gcc.gnu.org Subject: [gcc/devel/autopar_devel] [Ada] Improved support for aspect alignment in CCG X-Act-Checkin: gcc X-Git-Author: Javier Miranda X-Git-Refname: refs/heads/devel/autopar_devel X-Git-Oldrev: eb72ae5d4a981e40d7e3850cfa9db51056a95787 X-Git-Newrev: 7c2a3baf2c20906e0c4f800b322c850a2719d724 Message-Id: <20200822215100.2E613385DC14@sourceware.org> Date: Sat, 22 Aug 2020 21:51:00 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Aug 2020 21:51:00 -0000 https://gcc.gnu.org/g:7c2a3baf2c20906e0c4f800b322c850a2719d724 commit 7c2a3baf2c20906e0c4f800b322c850a2719d724 Author: Javier Miranda Date: Thu Dec 26 15:29:24 2019 -0500 [Ada] Improved support for aspect alignment in CCG 2020-06-02 Javier Miranda gcc/ada/ * sem_ch3.adb (Analyze_Object_Declaration): Set attribute Expansion_Delayed on aggregates that initialize an object that has aspect alignment or address clause. Done to allow ther initialization by means of multiple assignments. * exp_ch3.adb (Expand_N_Object_Declaration): Resolve delayed aggregates. This patch complements the patch applied to sem_ch3.adb Diff: --- gcc/ada/exp_ch3.adb | 8 ++++++-- gcc/ada/sem_ch3.adb | 6 +++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/gcc/ada/exp_ch3.adb b/gcc/ada/exp_ch3.adb index 15d468be6c1..cfc01f50ff6 100644 --- a/gcc/ada/exp_ch3.adb +++ b/gcc/ada/exp_ch3.adb @@ -6610,9 +6610,13 @@ package body Exp_Ch3 is -- An aggregate that must be built in place is not resolved and -- expanded until the enclosing construct is expanded. This will -- happen when the aggregate is limited and the declared object - -- has a following address clause. + -- has a following address clause; it happens also when generating + -- C code for an aggregate that has an alignment or address clause + -- (see Analyze_Object_Declaration). - if Is_Limited_Type (Typ) and then not Analyzed (Expr) then + if (Is_Limited_Type (Typ) or else Modify_Tree_For_C) + and then not Analyzed (Expr) + then Resolve (Expr, Typ); end if; diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index c57be77a46c..1479e34f765 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -4318,7 +4318,11 @@ package body Sem_Ch3 is -- If the aggregate is limited it will be built in place, and its -- expansion is deferred until the object declaration is expanded. - if Is_Limited_Type (T) then + -- This is also required when generating C code to ensure that an + -- object with an alignment or address clause can be initialized + -- by means of component by component assignments. + + if Is_Limited_Type (T) or else Modify_Tree_For_C then Set_Expansion_Delayed (E); end if;