diff options
author | Piotr Trojanek <trojanek@adacore.com> | 2023-09-07 22:13:51 +0200 |
---|---|---|
committer | Marc Poulhiès <poulhies@adacore.com> | 2023-09-15 15:01:30 +0200 |
commit | d9275e87812a65474be63d565ae4a2eb9a43e9b1 (patch) | |
tree | e7e7864de4c237001776a1b1d916d8bc8d22f410 /gcc | |
parent | b96446e0d0afd0d817f6206efabb1deed4e1ed8e (diff) | |
download | gcc-d9275e87812a65474be63d565ae4a2eb9a43e9b1.zip gcc-d9275e87812a65474be63d565ae4a2eb9a43e9b1.tar.gz gcc-d9275e87812a65474be63d565ae4a2eb9a43e9b1.tar.bz2 |
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.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/exp_aggr.adb | 5 | ||||
-rw-r--r-- | gcc/ada/sem_aggr.adb | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb index d72e270..165f517 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 e929fea..597c3ce 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. |