From: Gary Dismukes Date: Thu, 21 Aug 2025 18:48:12 +0000 (+0000) Subject: ada: Compiler crash on container aggregate association with nonstatic key choice X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=767fce326ec142a3d63b5472814ff516e363d8dc;p=thirdparty%2Fgcc.git 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. --- diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb index 34d4f84f95e..6b4f4a19d1f 100644 --- a/gcc/ada/exp_aggr.adb +++ b/gcc/ada/exp_aggr.adb @@ -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);