From ca03325fb3a5fbf9c8af853d4c7f199e1adb08e3 Mon Sep 17 00:00:00 2001 From: Piotr Trojanek Date: Tue, 12 Apr 2022 22:22:40 +0200 Subject: [PATCH] [Ada] Fix invalid expanded code for entry families Expansion of entry families created a slightly illegal AST with Elsif_Parts being an empty list. Cleanup uncovered by the work on detection of uninitialized scalars. gcc/ada/ * exp_ch9.adb (Build_Find_Body_Index): Remove empty Elsif_Parts from the constructed IF statement. --- gcc/ada/exp_ch9.adb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/gcc/ada/exp_ch9.adb b/gcc/ada/exp_ch9.adb index f9bdaf80c94..be791c3a338 100644 --- a/gcc/ada/exp_ch9.adb +++ b/gcc/ada/exp_ch9.adb @@ -2800,6 +2800,15 @@ package body Exp_Ch9 is begin Remove (Nod); Set_Else_Statements (Ret, Then_Statements (Nod)); + + -- If Elsif_Parts becomes empty then remove it entirely, as + -- otherwise we would violate the invariant of If_Statement + -- node described in Sinfo. + + if Is_Empty_List (Elsif_Parts (Ret)) then + pragma Assert (Elsif_Parts (Ret) /= No_List); + Set_Elsif_Parts (Ret, No_List); + end if; end; end if; end if; -- 2.47.2