From: Piotr Trojanek Date: Mon, 11 Mar 2024 22:02:50 +0000 (+0100) Subject: ada: Fix for validity checking and conditional evaluation of 'Old X-Git-Tag: basepoints/gcc-16~8942 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=75de817d88aade7fc5e8b4bebe3f179f1c5b6a87;p=thirdparty%2Fgcc.git ada: Fix for validity checking and conditional evaluation of 'Old Detection of expression that are "known on entry" (as defined in Ada 2022 RM 6.1.1(20/5)) was confused by validity checks when used from within expansion of attribute 'Old. gcc/ada/ * sem_util.adb (Is_Known_On_Entry): Handle constants introduced by validity checks. --- diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index be777d26e46..d512d462b44 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -30791,6 +30791,14 @@ package body Sem_Util is return False; end if; + -- Handle constants introduced by side-effect + -- removal, e.g. by validity checks. + + if not Comes_From_Source (Obj) then + return + Is_Known_On_Entry (Expression (Parent (Obj))); + end if; + -- return False if not "all views are constant". if Is_Immutably_Limited_Type (Obj_Typ) or Needs_Finalization (Obj_Typ)