From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1914) id 1C2BA395C068; Wed, 7 Jul 2021 16:25:35 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1C2BA395C068 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Pierre-Marie de Rodat To: gcc-cvs@gcc.gnu.org Subject: [gcc r12-2114] [Ada] Unchecked_Convert_To: set Parent X-Act-Checkin: gcc X-Git-Author: Bob Duff X-Git-Refname: refs/heads/master X-Git-Oldrev: a7f66404a62179ed8d759e8d454635f775cef016 X-Git-Newrev: ebef9784ef665511b407ed9081153a7eb52f816b Message-Id: <20210707162535.1C2BA395C068@sourceware.org> Date: Wed, 7 Jul 2021 16:25:35 +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: Wed, 07 Jul 2021 16:25:35 -0000 https://gcc.gnu.org/g:ebef9784ef665511b407ed9081153a7eb52f816b commit r12-2114-gebef9784ef665511b407ed9081153a7eb52f816b Author: Bob Duff Date: Wed May 19 07:52:32 2021 -0400 [Ada] Unchecked_Convert_To: set Parent gcc/ada/ * tbuild.adb (Unchecked_Convert_To): Set the Parent of the new node to the Parent of the old node. * tbuild.ads (Unchecked_Convert_To): Document differences between Convert_To and Unchecked_Convert_To. The previous documentation claimed they are identical except for the uncheckedness of the conversion. Diff: --- gcc/ada/tbuild.adb | 13 +++++++++---- gcc/ada/tbuild.ads | 5 ++++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/gcc/ada/tbuild.adb b/gcc/ada/tbuild.adb index e7186444365..4d9c1c410fd 100644 --- a/gcc/ada/tbuild.adb +++ b/gcc/ada/tbuild.adb @@ -919,10 +919,15 @@ package body Tbuild is -- All other cases else - Result := - Make_Unchecked_Type_Conversion (Loc, - Subtype_Mark => New_Occurrence_Of (Typ, Loc), - Expression => Relocate_Node (Expr)); + declare + Expr_Parent : constant Node_Id := Parent (Expr); + begin + Result := + Make_Unchecked_Type_Conversion (Loc, + Subtype_Mark => New_Occurrence_Of (Typ, Loc), + Expression => Relocate_Node (Expr)); + Set_Parent (Result, Expr_Parent); + end; end if; Set_Etype (Result, Typ); diff --git a/gcc/ada/tbuild.ads b/gcc/ada/tbuild.ads index f2f9809eb73..eb17865ad4f 100644 --- a/gcc/ada/tbuild.ads +++ b/gcc/ada/tbuild.ads @@ -340,7 +340,10 @@ package Tbuild is (Typ : Entity_Id; Expr : Node_Id) return Node_Id; -- Like Convert_To, but if a conversion is actually needed, constructs an - -- N_Unchecked_Type_Conversion node to do the required conversion. + -- N_Unchecked_Type_Conversion node to do the required conversion. Unlike + -- Convert_To, a new node is not required if Expr is already of the correct + -- BASE type, and if a new node is created, the Parent of Expr is copied to + -- it. ------------------------------------- -- Subprograms for Use by Gnat1drv --