]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Fix internal error on aggregate nested in container aggregate
authorEric Botcazou <ebotcazou@adacore.com>
Wed, 6 Sep 2023 07:37:29 +0000 (09:37 +0200)
committerEric Botcazou <ebotcazou@adacore.com>
Sun, 5 Jan 2025 11:34:14 +0000 (12:34 +0100)
This handles the case where a component association is present.

gcc/ada/
PR ada/118234
* exp_aggr.adb (Convert_To_Assignments): In the case of a
component association, call Is_Container_Aggregate on the parent's
parent.
(Expand_Array_Aggregate): Likewise.

gcc/ada/exp_aggr.adb

index cda5e66943ec6c87861e75ec745eadbff391b41c..479db647f3ccee53cc51d9218901be643a1ed5ad 100644 (file)
@@ -4933,9 +4933,11 @@ package body Exp_Aggr is
          --  excluding container aggregates as these are transformed into
          --  subprogram calls later.
 
-         (Parent_Kind in
-            N_Component_Association | N_Aggregate | N_Extension_Aggregate
-            and then not Is_Container_Aggregate (Parent_Node))
+         (Parent_Kind = N_Component_Association
+           and then not Is_Container_Aggregate (Parent (Parent_Node)))
+
+         or else (Parent_Kind in N_Aggregate | N_Extension_Aggregate
+                   and then not Is_Container_Aggregate (Parent_Node))
 
          --  Allocator (see Convert_Aggr_In_Allocator)
 
@@ -6799,10 +6801,10 @@ package body Exp_Aggr is
          Parent_Kind := Nkind (Parent_Node);
       end if;
 
-      if ((Parent_Kind = N_Component_Association
-            or else Parent_Kind = N_Aggregate
-            or else Parent_Kind = N_Extension_Aggregate)
-           and then not Is_Container_Aggregate (Parent_Node))
+      if (Parent_Kind = N_Component_Association
+           and then not Is_Container_Aggregate (Parent (Parent_Node)))
+        or else (Parent_Kind in N_Aggregate | N_Extension_Aggregate
+                  and then not Is_Container_Aggregate (Parent_Node))
         or else (Parent_Kind = N_Object_Declaration
                   and then Needs_Finalization (Typ))
         or else (Parent_Kind = N_Assignment_Statement