From: Eric Botcazou Date: Sun, 2 Jul 2023 08:07:55 +0000 (+0200) Subject: ada: Fix Valid_Scalars attribute applied to types from limited with X-Git-Tag: basepoints/gcc-15~7535 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f31a63438347c628a64257cb909a400cbd5388e3;p=thirdparty%2Fgcc.git ada: Fix Valid_Scalars attribute applied to types from limited with The attribute is wrongly computed as always True because, unlike for e.g. private types, Validated_View does not look through the limited view. gcc/ada/ * sem_util.ads (Validated_View): Document enhanced behavior. * sem_util.adb (Validated_View): Return the nonlimited view, if any, of types coming from a limited with. --- diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index 821aacf1ccb5..222fd72a0614 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -29231,6 +29231,13 @@ package body Sem_Util is return Typ; end if; + elsif From_Limited_With (Typ) then + if Has_Non_Limited_View (Typ) then + return Validated_View (Non_Limited_View (Typ)); + else + return Typ; + end if; + else return Typ; end if; diff --git a/gcc/ada/sem_util.ads b/gcc/ada/sem_util.ads index 3751fb737027..7fc77de2b8a3 100644 --- a/gcc/ada/sem_util.ads +++ b/gcc/ada/sem_util.ads @@ -3331,8 +3331,8 @@ package Sem_Util is function Validated_View (Typ : Entity_Id) return Entity_Id; -- Obtain the "validated view" of arbitrary type Typ which is suitable for -- verification by attribute 'Valid_Scalars. This view is the type itself - -- or its full view while stripping away concurrency, derivations, and - -- privacy. + -- or its full view or nonlimited view, while stripping away concurrency, + -- derivations, and privacy. function Visible_Ancestors (Typ : Entity_Id) return Elist_Id; -- [Ada 2012:AI-0125-1]: Collect all the visible parents and progenitors