ada: Compiler crash on container aggregate association with nonstatic key choice

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.
This commit is contained in:
Gary Dismukes
2025-08-21 18:48:12 +00:00
committed by Marc Poulhiès
parent 629f1de233
commit 767fce326e

View File

@@ -6984,7 +6984,9 @@ package body Exp_Aggr is
-- 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);