[COMMITTED] ada: Crash on empty aggregate using the Ada 2022 notation

Message ID 20230525080622.1957738-1-poulhies@adacore.com
State Committed
Commit f7f8e290a11a2d1ab0eefa5a87d4d56f0146f9d4
Headers
Series [COMMITTED] ada: Crash on empty aggregate using the Ada 2022 notation |

Commit Message

Marc Poulhiès May 25, 2023, 8:06 a.m. UTC
  From: Javier Miranda <miranda@adacore.com>

The compiler crashes processing an empty aggregate initializing
a component of a discriminated record type using the Ada 2022
notation (that is, []).

gcc/ada/

	* exp_aggr.adb (Build_Record_Aggr_Code): Protect access to
	aggregate components when the aggregate is empty.

Tested on x86_64-pc-linux-gnu, committed on master.

---
 gcc/ada/exp_aggr.adb | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
  

Patch

diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb
index f3ad8a9e1ae..de4d5a785fc 100644
--- a/gcc/ada/exp_aggr.adb
+++ b/gcc/ada/exp_aggr.adb
@@ -4061,7 +4061,9 @@  package body Exp_Aggr is
                         Decl  : Node_Id;
 
                      begin
-                        if Nkind (First (Choices (Assoc))) = N_Others_Choice
+                        if Present (Assoc)
+                          and then
+                            Nkind (First (Choices (Assoc))) = N_Others_Choice
                         then
                            Decl :=
                              Build_Actual_Subtype_Of_Component