From: Piotr Trojanek Date: Tue, 12 Apr 2022 20:22:40 +0000 (+0200) Subject: [Ada] Fix invalid expanded code for entry families X-Git-Tag: basepoints/gcc-14~6561 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ca03325fb3a5fbf9c8af853d4c7f199e1adb08e3;p=thirdparty%2Fgcc.git [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. --- 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;