From: Steve Baird Date: Sat, 9 Mar 2024 00:17:41 +0000 (-0800) Subject: ada: Disable Equivalent_Array_Aggregate optimization if predicates involved X-Git-Tag: basepoints/gcc-16~8944 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=591ddf34a1e759560d89627eefae1d0e13b61ee8;p=thirdparty%2Fgcc.git ada: Disable Equivalent_Array_Aggregate optimization if predicates involved In most paths, the function Build_Equivalent_Record_Aggregate was already testing Has_Predicates for a given component type and conditionally returning an Empty result. This is also needed in the case of a scalar component type. Without it, we can build corrupt trees that fail use-before-definition detection checks in gigi. gcc/ada/ * exp_ch3.adb (Build_Equivalent_Record_Aggregate): Add Has_Predicates test for a scalar component to match what is already done for other kinds of components. --- diff --git a/gcc/ada/exp_ch3.adb b/gcc/ada/exp_ch3.adb index 5764b22b800..f6314dff285 100644 --- a/gcc/ada/exp_ch3.adb +++ b/gcc/ada/exp_ch3.adb @@ -1950,6 +1950,7 @@ package body Exp_Ch3 is or else not Compile_Time_Known_Value (Type_Low_Bound (Comp_Type)) or else not Compile_Time_Known_Value (Type_High_Bound (Comp_Type)) + or else Has_Predicates (Etype (Comp)) then Initialization_Warning (T); return Empty;