https://gcc.gnu.org/g:d917954922f38652eb314f096e130ecaa53e8441
commit r15-201-gd917954922f38652eb314f096e130ecaa53e8441 Author: Piotr Trojanek <troja...@adacore.com> Date: Thu Jan 4 17:10:47 2024 +0100 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: --- gcc/ada/sem_prag.adb | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) 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;