]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[Ada] Unchecked_Convert_To: set Parent
authorBob Duff <duff@adacore.com>
Wed, 19 May 2021 11:52:32 +0000 (07:52 -0400)
committerPierre-Marie de Rodat <derodat@adacore.com>
Wed, 7 Jul 2021 16:23:15 +0000 (16:23 +0000)
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.

gcc/ada/tbuild.adb
gcc/ada/tbuild.ads

index e7186444365b74f99b8ff17b5b1d92daf30dc984..4d9c1c410fd64f3bcc72c334077a1890d5854a71 100644 (file)
@@ -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);
index f2f9809eb7340474c100cc3371ea3c8b08f2f6c9..eb17865ad4fc950ad1f60f97d6ca15ba37e158fd 100644 (file)
@@ -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 --