https://gcc.gnu.org/g:908ad66ea64ef84014d3ea9f2f3b62ed3968b9e3
commit r13-9281-g908ad66ea64ef84014d3ea9f2f3b62ed3968b9e3 Author: Eric Botcazou <ebotca...@adacore.com> Date: Fri Dec 13 20:50:44 2024 +0100 ada: Fix small thinko in previous change to two-pass aggregate expansion We need a type tailored to the base index type to compute the length. gcc/ada/ChangeLog: * exp_aggr.adb (Two_Pass_Aggregate_Expansion): Use the base type of the index type to find the type used to compute the length. Diff: --- gcc/ada/exp_aggr.adb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb index c7b57b9327ae..24048dc7eb29 100644 --- a/gcc/ada/exp_aggr.adb +++ b/gcc/ada/exp_aggr.adb @@ -6480,10 +6480,11 @@ package body Exp_Aggr is Comp_Type : constant Entity_Id := Etype (N); Index_Id : constant Entity_Id := Make_Temporary (Loc, 'I', N); Index_Type : constant Entity_Id := Etype (First_Index (Etype (N))); + Index_Base : constant Entity_Id := Base_Type (Index_Type); Size_Id : constant Entity_Id := Make_Temporary (Loc, 'I', N); Size_Type : constant Entity_Id := Integer_Type_For - (Esize (Index_Type), Is_Unsigned_Type (Index_Type)); + (Esize (Index_Base), Is_Unsigned_Type (Index_Base)); TmpE : constant Entity_Id := Make_Temporary (Loc, 'A', N); Assoc : Node_Id := First (Component_Associations (N));