[Ada] Cleanup definition of Might_Have_Tasks
authorJavier Miranda <miranda@adacore.com>
Wed, 24 Jun 2020 19:57:36 +0000 (15:57 -0400)
committerPierre-Marie de Rodat <derodat@adacore.com>
Thu, 15 Oct 2020 09:39:13 +0000 (05:39 -0400)
gcc/ada/

* exp_ch6.ads (Might_Have_Tasks): Update documentation.
* exp_ch6.adb (Might_Have_Tasks): Return also true when the type
has tasks.
(Make_Build_In_Place_Call_In_Allocator): Code cleanup.
* exp_ch3.adb (Ensure_Activation_Chain_And_Master,
Expand_N_Full_Type_Declaration, Expand_N_Object_Declaration):
Code cleanup.

gcc/ada/exp_ch3.adb
gcc/ada/exp_ch6.adb
gcc/ada/exp_ch6.ads

index 0b601c56213ad99cc1d9da9928acba33782d0324..93f8fa0728de271e79e72fc15cb72a9e73a7b652 100644 (file)
@@ -4758,7 +4758,7 @@ package body Exp_Ch3 is
    begin
       pragma Assert (Nkind (Obj_Decl) = N_Object_Declaration);
 
-      if Has_Task (Typ) or else Might_Have_Tasks (Typ) then
+      if Might_Have_Tasks (Typ) then
          Build_Activation_Chain_Entity (Obj_Decl);
 
          if Has_Task (Typ) then
@@ -5898,10 +5898,8 @@ package body Exp_Ch3 is
                Typ := Etype (Comp);
 
                if Ekind (Typ) = E_Anonymous_Access_Type
-                 and then
-                   (Has_Task (Available_View (Designated_Type (Typ)))
-                      or else
-                    Might_Have_Tasks (Available_View (Designated_Type (Typ))))
+                 and then Might_Have_Tasks
+                            (Available_View (Designated_Type (Typ)))
                  and then No (Master_Id (Typ))
                then
                   --  Ensure that the record or array type have a _master
@@ -6785,7 +6783,7 @@ package body Exp_Ch3 is
       --  of the stacks in this scenario, the stacks of the first array are
       --  not counted.
 
-      if (Has_Task (Typ) or else Might_Have_Tasks (Typ))
+      if Might_Have_Tasks (Typ)
         and then not Restriction_Active (No_Secondary_Stack)
         and then (Restriction_Active (No_Implicit_Heap_Allocations)
           or else Restriction_Active (No_Implicit_Task_Allocations))
index 26fb58fdf525a5ba0fd488e2b223fee422cc0b0f..1885e89e9633567a044c5d45f690ff3de482b013 100644 (file)
@@ -8912,7 +8912,7 @@ package body Exp_Ch6 is
          --  rather than some outer chain.
 
       begin
-         if Has_Task (Result_Subt) or else Might_Have_Tasks (Result_Subt) then
+         if Might_Have_Tasks (Result_Subt) then
             Actions := New_List;
             Build_Task_Allocate_Block_With_Init_Stmts
               (Actions, Allocator, Init_Stmts => New_List (Assign));
@@ -9954,8 +9954,9 @@ package body Exp_Ch6 is
    begin
       return not Global_No_Tasking
         and then not No_Run_Time_Mode
-        and then Is_Class_Wide_Type (Typ)
-        and then Is_Limited_Record (Typ);
+        and then (Has_Task (Typ)
+                    or else (Is_Class_Wide_Type (Typ)
+                               and then Is_Limited_Record (Typ)));
    end Might_Have_Tasks;
 
    ----------------------------
index 69b19090102ba257703b9ce9394b2a145dfb177e..272f893192398263fc3f91d3d17f203c3264eafa 100644 (file)
@@ -241,8 +241,8 @@ package Exp_Ch6 is
    --  object. Function_Call must denote a call to a CPP_Constructor function.
 
    function Might_Have_Tasks (Typ : Entity_Id) return Boolean;
-   --  Return True if Typ is a limited class-wide type (or subtype), since it
-   --  might have task components.
+   --  Return True when type Typ has tasks or when it is a limited class-wide
+   --  type (or subtype), since it might have task components.
 
    function Needs_BIP_Alloc_Form (Func_Id : Entity_Id) return Boolean;
    --  Ada 2005 (AI-318-02): Return True if the function needs an implicit