diff options
author | Piotr Trojanek <trojanek@adacore.com> | 2023-03-16 10:39:37 +0100 |
---|---|---|
committer | Marc Poulhiès <poulhies@adacore.com> | 2023-05-26 09:29:16 +0200 |
commit | c8def50f5cb208c29591cec14609f33d2dec92eb (patch) | |
tree | 73d5a1a44a4a9d9bbf0f25a0f55a5260014a088e /gcc/ada/exp_aggr.adb | |
parent | 0c1d2675f964808b042b9fafae2c540933bb8269 (diff) | |
download | gcc-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.adb | 17 |
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; |