https://gcc.gnu.org/g:da4f4b27c8f8e29be2003dc3771f8eae3b90e2ff

commit r13-9093-gda4f4b27c8f8e29be2003dc3771f8eae3b90e2ff
Author: Eric Botcazou <ebotca...@adacore.com>
Date:   Wed Sep 11 19:26:18 2024 +0200

    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:
---
 gcc/ada/exp_util.adb | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb
index 5435375d92e8..fa1370f70780 100644
--- a/gcc/ada/exp_util.adb
+++ b/gcc/ada/exp_util.adb
@@ -6486,6 +6486,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

Reply via email to