aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2024-09-11 19:26:18 +0200
committerMarc Poulhiès <dkm@gcc.gnu.org>2024-10-08 10:37:14 +0200
commitda2a85ac53cbb9a9162cfb9a6da1c2bd47fc0b1b (patch)
tree24e452322aa1b6e500ded3bdb9c192869a296148
parent48fd89dc4a49cf07dbde6d26c5eb39c97a0490de (diff)
downloadgcc-da2a85ac53cbb9a9162cfb9a6da1c2bd47fc0b1b.zip
gcc-da2a85ac53cbb9a9162cfb9a6da1c2bd47fc0b1b.tar.gz
gcc-da2a85ac53cbb9a9162cfb9a6da1c2bd47fc0b1b.tar.bz2
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.
-rw-r--r--gcc/ada/exp_util.adb1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb
index 5aa0f77..8b9ce9a 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