aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorSteve Baird <baird@adacore.com>2024-03-08 16:17:41 -0800
committerMarc Poulhiès <poulhies@adacore.com>2024-05-17 10:21:04 +0200
commit591ddf34a1e759560d89627eefae1d0e13b61ee8 (patch)
tree8dc3f2d58bcc587437a9f1a0f2d1808b8a039cbf /gcc/ada
parentd87d0f331523684af0c975afa95232e9bf7070f6 (diff)
downloadgcc-591ddf34a1e759560d89627eefae1d0e13b61ee8.zip
gcc-591ddf34a1e759560d89627eefae1d0e13b61ee8.tar.gz
gcc-591ddf34a1e759560d89627eefae1d0e13b61ee8.tar.bz2
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.
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/exp_ch3.adb1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/ada/exp_ch3.adb b/gcc/ada/exp_ch3.adb
index 5764b22..f6314df 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;