diff options
author | Piotr Trojanek <trojanek@adacore.com> | 2022-04-12 22:22:40 +0200 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2022-05-19 14:05:30 +0000 |
commit | ca03325fb3a5fbf9c8af853d4c7f199e1adb08e3 (patch) | |
tree | 2ba4b10e10081d1f7ca31a8497c056019e9c0e11 /gcc | |
parent | b626498f6e444ac40eab1a8eaeb843e743028b13 (diff) | |
download | gcc-ca03325fb3a5fbf9c8af853d4c7f199e1adb08e3.zip gcc-ca03325fb3a5fbf9c8af853d4c7f199e1adb08e3.tar.gz gcc-ca03325fb3a5fbf9c8af853d4c7f199e1adb08e3.tar.bz2 |
[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.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/exp_ch9.adb | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ada/exp_ch9.adb b/gcc/ada/exp_ch9.adb index f9bdaf8..be791c3 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; |