From: Piotr Trojanek Date: Sun, 31 Jul 2022 20:27:13 +0000 (+0200) Subject: [Ada] Fix insertion of a runtime check for null array aggregate X-Git-Tag: basepoints/gcc-14~4779 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b26be61b8d23cc9d7a4e36feeadd9c8f0ec8b909;p=thirdparty%2Fgcc.git [Ada] Fix insertion of a runtime check for null array aggregate A null array aggregate of Ada 2022 requires a conditional runtime check that was inserted as an if-statement. While gigi can handle statements inserted into a list of declarations, in GNATprove such a statement will cause a crash. It is better to insert a conditional raise node, which is properly handled by both gigi and GNATprove. gcc/ada/ * sem_aggr.adb (Resolve_Null_Array_Aggregate): Insert check as a Raise_Constraint_Error node and not an If_Statement. --- diff --git a/gcc/ada/sem_aggr.adb b/gcc/ada/sem_aggr.adb index 4ad4a29373dc..dddc75f3a2ee 100644 --- a/gcc/ada/sem_aggr.adb +++ b/gcc/ada/sem_aggr.adb @@ -4113,12 +4113,10 @@ package body Sem_Aggr is -- including modular). Check := - Make_If_Statement (Loc, + Make_Raise_Constraint_Error (Loc, Condition => Make_Op_Le (Loc, New_Copy_Tree (Lo), New_Copy_Tree (Hi)), - Then_Statements => - New_List (Make_Raise_Constraint_Error - (Loc, Reason => CE_Range_Check_Failed))); + Reason => CE_Range_Check_Failed); Insert_Action (N, Check);