From: Eric Botcazou <[email protected]>
This streamlines the code in the callers. No functional changes.
gcc/ada/ChangeLog:
* exp_ch9.ads (Build_Task_Allocate_Block): Change to function and
remove first formal parameter.
* exp_ch9.adb (Build_Task_Allocate_Block): Likewise. Return an
anonymous list of nodes.
* exp_aggr.adb (Convert_Aggr_In_Allocator): Adjust to above change.
* exp_ch4.adb (Expand_N_Allocator): Likewise.
* exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Likewise.
Tested on x86_64-pc-linux-gnu (before the recent bootstrap breakage), committed
on master.
---
gcc/ada/exp_aggr.adb | 13 +++----------
gcc/ada/exp_ch4.adb | 12 +++---------
gcc/ada/exp_ch6.adb | 7 +++----
gcc/ada/exp_ch9.adb | 20 +++++++++-----------
gcc/ada/exp_ch9.ads | 14 ++++++--------
5 files changed, 24 insertions(+), 42 deletions(-)
diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb
index 0a0c857b45e..24fd5b5f92a 100644
--- a/gcc/ada/exp_aggr.adb
+++ b/gcc/ada/exp_aggr.adb
@@ -3715,20 +3715,13 @@ package body Exp_Aggr is
begin
if Has_Default_Init_Comps (Aggr) then
declare
- Init_Stmts : constant List_Id := Late_Expansion (Aggr, Typ, Occ);
+ Stmts : constant List_Id := Late_Expansion (Aggr, Typ, Occ);
begin
if Has_Task (Typ) then
- declare
- Actions : constant List_Id := New_List;
-
- begin
- Build_Task_Allocate_Block (Actions, Aggr, Init_Stmts);
- Insert_Actions (N, Actions);
- end;
-
+ Insert_Actions (N, Build_Task_Allocate_Block (Aggr, Stmts));
else
- Insert_Actions (N, Init_Stmts);
+ Insert_Actions (N, Stmts);
end if;
end;
diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb
index 1c9dc07b4ff..1d167e01b8c 100644
--- a/gcc/ada/exp_ch4.adb
+++ b/gcc/ada/exp_ch4.adb
@@ -5023,15 +5023,9 @@ package body Exp_Ch4 is
-- create a specific block to activate the created tasks.
if Has_Task (Etyp) then
- declare
- Actions : constant List_Id := New_List;
-
- begin
- Build_Task_Allocate_Block
- (Actions, Relocate_Node (N), Init_Stmts);
- Insert_Actions (N, Actions, Suppress => All_Checks);
- end;
-
+ Insert_Actions (N,
+ Build_Task_Allocate_Block (N, Init_Stmts),
+ Suppress => All_Checks);
else
Insert_Actions (N, Init_Stmts, Suppress => All_Checks);
end if;
diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb
index 23150c73b91..48627649a30 100644
--- a/gcc/ada/exp_ch6.adb
+++ b/gcc/ada/exp_ch6.adb
@@ -9187,10 +9187,9 @@ package body Exp_Ch6 is
begin
if Might_Have_Tasks (Result_Subt) then
- Actions := New_List;
- Build_Task_Allocate_Block
- (Actions, Allocator, Init_Stmts => New_List (Assign));
- Chain := Activation_Chain_Entity (Last (Actions));
+ Actions :=
+ Build_Task_Allocate_Block (Allocator, New_List (Assign));
+ Chain := Activation_Chain_Entity (Last (Actions));
else
Actions := New_List (Assign);
Chain := Empty;
diff --git a/gcc/ada/exp_ch9.adb b/gcc/ada/exp_ch9.adb
index f23df88a5b8..636dc6f7703 100644
--- a/gcc/ada/exp_ch9.adb
+++ b/gcc/ada/exp_ch9.adb
@@ -4557,10 +4557,9 @@ package body Exp_Ch9 is
-- Build_Task_Allocate_Block --
-------------------------------
- procedure Build_Task_Allocate_Block
- (Actions : List_Id;
- N : Node_Id;
- Init_Stmts : List_Id)
+ function Build_Task_Allocate_Block
+ (N : Node_Id;
+ Init_Stmts : List_Id) return List_Id
is
Loc : constant Source_Ptr := Sloc (N);
Chain : constant Entity_Id :=
@@ -4593,17 +4592,16 @@ package body Exp_Ch9 is
Handled_Statement_Sequence =>
Make_Handled_Sequence_Of_Statements (Loc, Init_Stmts),
- Has_Created_Identifier => True,
+ Has_Created_Identifier => True,
Is_Task_Allocation_Block => True);
- Append_To (Actions,
+ Set_Activation_Chain_Entity (Block, Chain);
+
+ return New_List (
Make_Implicit_Label_Declaration (Loc,
Defining_Identifier => Blkent,
- Label_Construct => Block));
-
- Append_To (Actions, Block);
-
- Set_Activation_Chain_Entity (Block, Chain);
+ Label_Construct => Block),
+ Block);
end Build_Task_Allocate_Block;
-----------------------------------
diff --git a/gcc/ada/exp_ch9.ads b/gcc/ada/exp_ch9.ads
index 4e5bdcc6434..4eda90d9ea2 100644
--- a/gcc/ada/exp_ch9.ads
+++ b/gcc/ada/exp_ch9.ads
@@ -103,13 +103,11 @@ package Exp_Ch9 is
-- Activate_Tasks with this entity as the single parameter is inserted at
-- the start of the statements of the activator.
- procedure Build_Task_Allocate_Block
- (Actions : List_Id;
- N : Node_Id;
- Init_Stmts : List_Id);
- -- This routine is used in the case of allocators where the designated type
- -- is a task or contains tasks. In this case, the normal initialize call
- -- is replaced by:
+ function Build_Task_Allocate_Block
+ (N : Node_Id;
+ Init_Stmts : List_Id) return List_Id;
+ -- This function is used for allocators where the designated type is a task
+ -- or contains tasks. In this case, the initialization call is replaced by:
--
-- blockname : label;
-- blockname : declare
@@ -130,7 +128,7 @@ package Exp_Ch9 is
-- to get the task or tasks created and initialized. The expunge call
-- ensures that any tasks that get created but not activated due to an
-- exception are properly expunged (it has no effect in the normal case).
- -- The argument N is the allocator, and Args is the list of arguments for
+ -- The argument N is the allocator, and Init_Stmts is a list containing
-- the initialization call, constructed by the caller, which uses the
-- Master_Id of the access type as the _Master parameter, and _Chain
-- (defined above) as the _Chain parameter.
--
2.51.0