From: Piotr Trojanek Date: Thu, 14 May 2020 10:11:52 +0000 (+0200) Subject: [Ada] Analyze aspects once generic subprograms are recognized X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=03593350f9e9d1a3f7ec9785185c5c03af01f452;p=thirdparty%2Fgcc.git [Ada] Analyze aspects once generic subprograms are recognized gcc/ada/ * sem_ch12.adb (Analyze_Generic_Subprogram_Declaration): Call Analyze_Aspect_Specifications after setting Ekind of the analyzed entity. * sem_ch13.adb (Analyze_Aspect_Yield): Remove minimal decoration of generic subprograms. --- diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb index 11b6ce215f42..c04a20af7c60 100644 --- a/gcc/ada/sem_ch12.adb +++ b/gcc/ada/sem_ch12.adb @@ -3860,13 +3860,6 @@ package body Sem_Ch12 is Enter_Name (Id); Set_Scope_Depth_Value (Id, Scope_Depth (Current_Scope) + 1); - -- Analyze the aspects of the generic copy to ensure that all generated - -- pragmas (if any) perform their semantic effects. - - if Has_Aspects (N) then - Analyze_Aspect_Specifications (N, Id); - end if; - Push_Scope (Id); Enter_Generic_Scope (Id); Set_Inner_Instances (Id, New_Elmt_List); @@ -3880,6 +3873,13 @@ package body Sem_Ch12 is Set_Ekind (Id, E_Generic_Procedure); end if; + -- Analyze the aspects of the generic copy to ensure that all generated + -- pragmas (if any) perform their semantic effects. + + if Has_Aspects (N) then + Analyze_Aspect_Specifications (N, Id); + end if; + -- Set SPARK_Mode from context Set_SPARK_Pragma (Id, SPARK_Mode_Pragma); diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb index 2131bb3719ad..88d3124e1057 100644 --- a/gcc/ada/sem_ch13.adb +++ b/gcc/ada/sem_ch13.adb @@ -2563,22 +2563,6 @@ package body Sem_Ch13 is end if; if Expr_Value then - - -- Adding minimum decoration to generic subprograms to set - -- the Yield attribute (since at this stage it may not be - -- set; see Analyze_Generic_Subprogram_Declaration). - - if Nkind (N) in N_Generic_Subprogram_Declaration - and then Ekind (E) = E_Void - then - if Nkind (Specification (N)) = N_Function_Specification - then - Set_Ekind (E, E_Function); - else - Set_Ekind (E, E_Procedure); - end if; - end if; - Set_Has_Yield_Aspect (E); end if;