aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/exp_aggr.adb
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2023-03-16 10:39:37 +0100
committerMarc Poulhiès <poulhies@adacore.com>2023-05-26 09:29:16 +0200
commitc8def50f5cb208c29591cec14609f33d2dec92eb (patch)
tree73d5a1a44a4a9d9bbf0f25a0f55a5260014a088e /gcc/ada/exp_aggr.adb
parent0c1d2675f964808b042b9fafae2c540933bb8269 (diff)
downloadgcc-c8def50f5cb208c29591cec14609f33d2dec92eb.zip
gcc-c8def50f5cb208c29591cec14609f33d2dec92eb.tar.gz
gcc-c8def50f5cb208c29591cec14609f33d2dec92eb.tar.bz2
ada: Use context variables in expansion of aggregates
Code cleanup; semantics is unaffected. gcc/ada/ * exp_aggr.adb (Build_Constrained_Type): Remove local constants that were shadowing equivalent global constants; replace a wrapper that calls Make_Integer_Literal with a numeric literal; remove explicit Aliased_Present parameter which is equivalent to the default value. (Check_Bounds): Remove unused initial value. (Expand_Array_Aggregate): Use aggregate type from the context.
Diffstat (limited to 'gcc/ada/exp_aggr.adb')
-rw-r--r--gcc/ada/exp_aggr.adb17
1 files changed, 7 insertions, 10 deletions
diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb
index 60449fb..1dcbfad 100644
--- a/gcc/ada/exp_aggr.adb
+++ b/gcc/ada/exp_aggr.adb
@@ -5835,11 +5835,9 @@ package body Exp_Aggr is
----------------------------
procedure Build_Constrained_Type (Positional : Boolean) is
- Loc : constant Source_Ptr := Sloc (N);
- Agg_Type : constant Entity_Id := Make_Temporary (Loc, 'A');
+ Agg_Type : constant Entity_Id := Make_Temporary (Loc, 'A');
Decl : Node_Id;
- Typ : constant Entity_Id := Etype (N);
- Indexes : constant List_Id := New_List;
+ Indexes : constant List_Id := New_List;
Num : Nat;
Sub_Agg : Node_Id;
@@ -5851,12 +5849,12 @@ package body Exp_Aggr is
if Positional then
Sub_Agg := N;
- for D in 1 .. Number_Dimensions (Typ) loop
+ for D in 1 .. Aggr_Dimension loop
Num := List_Length (Expressions (Sub_Agg));
Append_To (Indexes,
Make_Range (Loc,
- Low_Bound => Make_Integer_Literal (Loc, 1),
+ Low_Bound => Make_Integer_Literal (Loc, Uint_1),
High_Bound => Make_Integer_Literal (Loc, Num)));
Sub_Agg := First (Expressions (Sub_Agg));
@@ -5867,7 +5865,7 @@ package body Exp_Aggr is
-- is not processable by the back end, therefore not necessarily
-- positional. Retrieve each dimension bounds (computed earlier).
- for D in 1 .. Number_Dimensions (Typ) loop
+ for D in 1 .. Aggr_Dimension loop
Append_To (Indexes,
Make_Range (Loc,
Low_Bound => Aggr_Low (D),
@@ -5883,7 +5881,6 @@ package body Exp_Aggr is
Discrete_Subtype_Definitions => Indexes,
Component_Definition =>
Make_Component_Definition (Loc,
- Aliased_Present => False,
Subtype_Indication =>
New_Occurrence_Of (Component_Type (Typ), Loc))));
@@ -5904,7 +5901,7 @@ package body Exp_Aggr is
Ind_Bounds : constant Range_Nodes :=
Get_Index_Bounds (Index_Bounds_Node);
- Cond : Node_Id := Empty;
+ Cond : Node_Id;
begin
-- For a null array aggregate check that high bound (i.e., low
@@ -6954,7 +6951,7 @@ package body Exp_Aggr is
-- If this is an array of tasks, it will be expanded into build-in-place
-- assignments. Build an activation chain for the tasks now.
- if Has_Task (Etype (N)) then
+ if Has_Task (Typ) then
Build_Activation_Chain_Entity (N);
end if;