exp_aggr.adb (Build_Array_Aggr_Code): If component type includes tasks and context...
authorEd Schonberg <schonberg@adacore.com>
Tue, 27 May 2008 12:36:32 +0000 (14:36 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Tue, 27 May 2008 12:36:32 +0000 (14:36 +0200)
2008-05-27  Ed Schonberg  <schonberg@adacore.com>

* exp_aggr.adb (Build_Array_Aggr_Code): If component type includes
tasks and context is an object declaration. create master entity before
expansion.

From-SVN: r136026

gcc/ada/exp_aggr.adb

index 08e23ab35dfd66df3c346d820188eeef27605c9d..40ff3796671d456125540abe8ae2db9a86ad9ea8 100644 (file)
@@ -1521,6 +1521,16 @@ package body Exp_Aggr is
                  Make_Integer_Literal (Loc, Uint_0))));
       end if;
 
+      --  If the component type contains tasks, we need to build a Master
+      --  entity in the current scope, because it will be needed if build-
+      --  in-place functions are called in the expanded code.
+
+      if Nkind (Parent (N)) = N_Object_Declaration
+        and then Has_Task (Typ)
+      then
+         Build_Master_Entity (Defining_Identifier (Parent (N)));
+      end if;
+
       --  STEP 1: Process component associations
 
       --  For those associations that may generate a loop, initialize