The compiler blows up on a container aggregate with a container element
association that has a key_choice given by a nonstatic key expression.
This happens in the size computation for the aggregate due to calling
Update_Choices with the nonstatic expression. The fix is simply to
condition the call to Update_Choices on whether the choice expression
is static.
gcc/ada/ChangeLog:
* exp_aggr.adb (Build_Container_Aggr_Code.Build_Size_Expr): In the case
of an association with a single choice, only call Update_Choices when
the choice expression is nonstatic.
-- Choice is a single discrete value
elsif Is_Discrete_Type (Etype (Choice)) then
- Update_Choices (Choice, Choice);
+ if Is_Static_Expression (Choice) then
+ Update_Choices (Choice, Choice);
+ end if;
Temp_Siz_Exp := Make_Integer_Literal (Loc, 1);
Set_Is_Static_Expression (Temp_Siz_Exp);