From: Piotr Trojanek Date: Thu, 4 Jan 2024 16:10:47 +0000 (+0100) Subject: ada: Cleanup collecting of implicit outputs X-Git-Tag: basepoints/gcc-16~9352 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d917954922f38652eb314f096e130ecaa53e8441;p=thirdparty%2Fgcc.git ada: Cleanup collecting of implicit outputs Move handling of IN parameters to where both IN and IN OUT parameters are handled. This makes the code marginally more efficient and symmetrical to handling of implicit inputs. gcc/ada/ * sem_prag.adb (Collect_Global_Item): Move code. --- diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index ab60a8ad1d5..25a98cb414e 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -31651,6 +31651,17 @@ package body Sem_Prag is while Present (Formal) loop if Ekind (Formal) in E_In_Out_Parameter | E_In_Parameter then Append_New_Elmt (Formal, Subp_Inputs); + + -- IN parameters of procedures and protected entries can act as + -- outputs when the related type is access-to-variable. + + if Ekind (Formal) = E_In_Parameter + and then Ekind (Spec_Id) not in E_Function + | E_Generic_Function + and then Is_Access_Variable (Etype (Formal)) + then + Append_New_Elmt (Formal, Subp_Outputs); + end if; end if; if Ekind (Formal) in E_In_Out_Parameter | E_Out_Parameter then @@ -31667,17 +31678,6 @@ package body Sem_Prag is end if; end if; - -- IN parameters of procedures and protected entries can act as - -- outputs when the related type is access-to-variable. - - if Ekind (Formal) = E_In_Parameter - and then Ekind (Spec_Id) not in E_Function - | E_Generic_Function - and then Is_Access_Variable (Etype (Formal)) - then - Append_New_Elmt (Formal, Subp_Outputs); - end if; - Next_Formal (Formal); end loop;