In some cases with -gnat2022 enabled, an enabled postcondition
containing a quantified expression containing an Old attribute reference
could result in an internal error during compilation. Fix this.
Tested on x86_64-pc-linux-gnu, committed on trunk
gcc/ada/
* sem_util.adb (Is_Repeatedly_Evaluated): Handle the case of an
Old attribute reference that occurs within what was originally a
quantified expression but which expansion has transformed into
an Expression_With_Actions.
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
--- a/gcc/ada/sem_util.adb
+++ b/gcc/ada/sem_util.adb
@@ -31510,7 +31510,12 @@ package body Sem_Util is
-- quantified_expression.
if Nkind (Par) = N_Quantified_Expression
- and then Trailer = Condition (Par)
+ and then Trailer = Condition (Par)
+ then
+ return True;
+ elsif Nkind (Par) = N_Expression_With_Actions
+ and then
+ Nkind (Original_Node (Par)) = N_Quantified_Expression
then
return True;
end if;