--- gcc/ada/exp_aggr.adb +++ gcc/ada/exp_aggr.adb @@ -4367,8 +4367,7 @@ package body Exp_Aggr is elsif Nkind (Expression (Expr)) /= N_Aggregate or else not Compile_Time_Known_Aggregate (Expression (Expr)) or else Expansion_Delayed (Expression (Expr)) - or else Nkind_In (Expr, N_Iterated_Component_Association, - N_Quantified_Expression) + or else Nkind (Expr) = N_Iterated_Component_Association then Static_Components := False; exit; @@ -4521,16 +4520,15 @@ package body Exp_Aggr is -- If we have an others choice, fill in the missing elements -- subject to the limit established by Max_Others_Replicate. - -- If the expression involves a construct that generates - -- a loop, we must generate individual assignments and - -- no flattening is possible. if Nkind (Choice) = N_Others_Choice then Rep_Count := 0; - if Nkind_In (Expression (Elmt), - N_Iterated_Component_Association, - N_Quantified_Expression) + -- If the expression involves a construct that generates + -- a loop, we must generate individual assignments and + -- no flattening is possible. + + if Nkind (Expression (Elmt)) = N_Quantified_Expression then return False; end if;