From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1914) id 2BCA4384BC2B; Fri, 13 May 2022 08:09:38 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2BCA4384BC2B MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Pierre-Marie de Rodat To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-411] [Ada] Storage_Model_Object fails to return object entity X-Act-Checkin: gcc X-Git-Author: Gary Dismukes X-Git-Refname: refs/heads/master X-Git-Oldrev: d663778287d3bd908b5e059f640ca6a02bb0f487 X-Git-Newrev: ba75fee24d91eb241b5784a8a55175c294b040ab Message-Id: <20220513080938.2BCA4384BC2B@sourceware.org> Date: Fri, 13 May 2022 08:09:38 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 May 2022 08:09:38 -0000 https://gcc.gnu.org/g:ba75fee24d91eb241b5784a8a55175c294b040ab commit r13-411-gba75fee24d91eb241b5784a8a55175c294b040ab Author: Gary Dismukes Date: Fri Mar 4 17:19:18 2022 -0500 [Ada] Storage_Model_Object fails to return object entity After a compilation unit containing a Designated_Storage_Model aspect was processed by the compiler front end, the aspect's expression was seen as not having been analyzed. In some cases this can lead to the Storage_Model_Object function not returning the entity of the associated model object (such as when the model object is specified using an expanded name). This was due to a second copy of the aspect's expression being made in Check_Aspect_At_Freeze_Point, and that copy wasn't analyzed, even though the earlier version of the expression prior to that copy had been. (The copy is needed for proper checking of Ada's rules for ensuring that certain aspect expressions resolve the same way at the freeze point and later at the end of the declarations.) This is corrected by doing analysis of the new aspect expression within Check_Aspect_At_Freeze_Point, as is already done in that procedure in the case of several other aspects. gcc/ada/ * sem_ch13.adb (Check_Aspect_At_Freeze_Point): Analyze the expression of the aspect at this point, like other aspects that denote simple entities. Ensures that function Storage_Model_Object will have an entity to retrieve from the aspect expression. Also, move comment about aspects that don't require delay analysis in front of last alternative of the case statement, where it's supposed to be. Diff: --- gcc/ada/sem_ch13.adb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb index 3cac123b134..61f7ba78a94 100644 --- a/gcc/ada/sem_ch13.adb +++ b/gcc/ada/sem_ch13.adb @@ -11359,9 +11359,11 @@ package body Sem_Ch13 is when Aspect_Predicate_Failure => T := Standard_String; - -- Here is the list of aspects that don't require delay analysis + -- As for some other aspects above, the expression of this aspect is + -- just an entity that does not need any resolution, so just analyze. when Aspect_Designated_Storage_Model => + Analyze (Expression (ASN)); return; when Aspect_Storage_Model_Type => @@ -11389,6 +11391,8 @@ package body Sem_Ch13 is return; + -- Here is the list of aspects that don't require delay analysis + when Aspect_Abstract_State | Aspect_Annotate | Aspect_Async_Readers