From: Eric Botcazou Date: Wed, 11 Sep 2024 17:26:18 +0000 (+0200) Subject: ada: Fix internal error on elsif part of if-statement containing if-expression X-Git-Tag: basepoints/gcc-16~5393 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=da2a85ac53cbb9a9162cfb9a6da1c2bd47fc0b1b;p=thirdparty%2Fgcc.git ada: Fix internal error on elsif part of if-statement containing if-expression The problem occurs when the compiler is trying to find a context to which it can hoist finalization actions coming from the if-expression, because Find_Hook_Context incorrectly returns the N_Elsif_Part node. gcc/ada/ChangeLog: PR ada/114640 * exp_util.adb (Find_Hook_Context): For a node present within a conditional expression, do not return an N_Elsif_Part node. --- diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb index 5aa0f77006c..8b9ce9a2acc 100644 --- a/gcc/ada/exp_util.adb +++ b/gcc/ada/exp_util.adb @@ -6742,6 +6742,7 @@ package body Exp_Util is | N_Aggregate | N_Delta_Aggregate | N_Extension_Aggregate + | N_Elsif_Part and then Nkind (Parent (Par)) not in N_Function_Call | N_Procedure_Call_Statement | N_Entry_Call_Statement