From: Piotr Trojanek Date: Thu, 7 Sep 2023 20:13:51 +0000 (+0200) Subject: ada: Explicitly analyze and expand null array aggregates X-Git-Tag: basepoints/gcc-15~6107 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d9275e87812a65474be63d565ae4a2eb9a43e9b1;p=thirdparty%2Fgcc.git ada: Explicitly analyze and expand null array aggregates Null array aggregates have present but empty lists of expressions and component associations. This confuses the previous code for ordinary array aggregates, which assumes that if a list of either expressions or component associations is present, then it is non-empty. This patch adds explicit handling for null array aggregates to avoid assertion failures in code for ordinary array aggregates. gcc/ada/ * exp_aggr.adb (Build_Array_Aggr_Code): Don't build aggregate code for null array aggregates. * sem_aggr.adb (Resolve_Array_Aggregate): Don't examine formatting of a null array aggregate. --- diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb index d72e27030e50..165f517c0316 100644 --- a/gcc/ada/exp_aggr.adb +++ b/gcc/ada/exp_aggr.adb @@ -1989,7 +1989,10 @@ package body Exp_Aggr is -- Skip this if no component associations - if No (Expressions (N)) then + if Is_Null_Aggregate (N) then + null; + + elsif No (Expressions (N)) then -- STEP 1 (a): Sort the discrete choices diff --git a/gcc/ada/sem_aggr.adb b/gcc/ada/sem_aggr.adb index e929fea3bb6d..597c3ce2dd11 100644 --- a/gcc/ada/sem_aggr.adb +++ b/gcc/ada/sem_aggr.adb @@ -2081,7 +2081,10 @@ package body Sem_Aggr is -- STEP 1: make sure the aggregate is correctly formatted - if Present (Component_Associations (N)) then + if Is_Null_Aggregate (N) then + null; + + elsif Present (Component_Associations (N)) then -- Verify that all or none of the component associations -- include an iterator specification.