From: Eric Botcazou <[email protected]>
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.
Tested on x86_64-pc-linux-gnu, committed on master.
---
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 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
--
2.43.0