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;

Reply via email to