From: Piotr Trojanek <troja...@adacore.com> 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. Tested on x86_64-pc-linux-gnu, committed on master. --- 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; -- 2.43.2