https://gcc.gnu.org/g:55d87cd891920ea2d3f779fdc154e64ee4ce1a44

commit r16-5657-g55d87cd891920ea2d3f779fdc154e64ee4ce1a44
Author: Eric Botcazou <[email protected]>
Date:   Sun Nov 16 14:29:39 2025 +0100

    ada: Couple of small and unrelated cleanups
    
    No functional changes.
    
    gcc/ada/ChangeLog:
    
            * exp_ch11.adb (Expand_N_Handled_Sequence_Of_Statement): Merge the
            eslif condition with the if condition for cleanup actions.
            * sem_ch6.adb (Analyze_Procedure_Call.Analyze_Call_And_Resolve): Get
            rid of if statement whose condition is always true.
            * sinfo.ads (Finally_Statements): Document their purpose.

Diff:
---
 gcc/ada/exp_ch11.adb | 20 +++++---------------
 gcc/ada/sem_ch6.adb  | 12 +++---------
 gcc/ada/sinfo.ads    | 10 ++++++----
 3 files changed, 14 insertions(+), 28 deletions(-)

diff --git a/gcc/ada/exp_ch11.adb b/gcc/ada/exp_ch11.adb
index a6b17184cb16..719217879551 100644
--- a/gcc/ada/exp_ch11.adb
+++ b/gcc/ada/exp_ch11.adb
@@ -1279,27 +1279,17 @@ package body Exp_Ch11 is
 
       --  Add cleanup actions if required. No cleanup actions are needed in
       --  thunks associated with interfaces, because they only displace the
-      --  pointer to the object. For extended return statements, we need
-      --  cleanup actions if the Handled_Statement_Sequence contains generated
-      --  objects of controlled types, for example. We do not want to clean up
-      --  the return object.
-
-      if Nkind (Parent (N)) not in N_Accept_Statement
-                                 | N_Extended_Return_Statement
-                                 | N_Package_Body
-        and then not Delay_Cleanups (Current_Scope)
-        and then not Is_Thunk (Current_Scope)
-      then
-         Expand_Cleanup_Actions (Parent (N));
+      --  pointer to the object.
 
-      elsif Nkind (Parent (N)) = N_Extended_Return_Statement
-        and then Handled_Statement_Sequence (Parent (N)) = N
+      if Nkind (Parent (N)) not in N_Accept_Statement | N_Package_Body
         and then not Delay_Cleanups (Current_Scope)
+        and then not Is_Thunk (Current_Scope)
       then
-         pragma Assert (not Is_Thunk (Current_Scope));
          Expand_Cleanup_Actions (Parent (N));
       end if;
 
+      --  Protect the Finally_Statements with abort defer/undefer
+
       if Present (Finally_Statements (N)) and then Abort_Allowed then
          if Exceptions_OK then
             Set_Finally_Statements
diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb
index 3b7e61ed11eb..2e0df1df29eb 100644
--- a/gcc/ada/sem_ch6.adb
+++ b/gcc/ada/sem_ch6.adb
@@ -1611,9 +1611,7 @@ package body Sem_Ch6 is
 
    procedure Analyze_Procedure_Call (N : Node_Id) is
       procedure Analyze_Call_And_Resolve;
-      --  Do Analyze and Resolve calls for procedure call. At the end, check
-      --  for illegal order dependence.
-      --  ??? where is the check for illegal order dependencies?
+      --  Do Analyze and Resolve for procedure call
 
       ------------------------------
       -- Analyze_Call_And_Resolve --
@@ -1621,12 +1619,8 @@ package body Sem_Ch6 is
 
       procedure Analyze_Call_And_Resolve is
       begin
-         if Nkind (N) = N_Procedure_Call_Statement then
-            Analyze_Call (N);
-            Resolve (N, Standard_Void_Type);
-         else
-            Analyze (N);
-         end if;
+         Analyze_Call (N);
+         Resolve (N, Standard_Void_Type);
       end Analyze_Call_And_Resolve;
 
       --  Local variables
diff --git a/gcc/ada/sinfo.ads b/gcc/ada/sinfo.ads
index 34777c01cfb6..bd0ef87e9e81 100644
--- a/gcc/ada/sinfo.ads
+++ b/gcc/ada/sinfo.ads
@@ -1274,8 +1274,9 @@ package Sinfo is
    --    that references the file the external initializer points to.
 
    --  Finally_Statements
-   --    Present in N_Handled_Statement_Sequences nodes. Points to a list
-   --    containing statements.
+   --    Present in N_Handled_Sequence_Of_Statements nodes. Points to a list
+   --    of statements to be executed on all possible execution paths on exit
+   --    to the sequence of statements.
 
    --  First_Inlined_Subprogram
    --    Present in the N_Compilation_Unit node for the main program. Points
@@ -6920,10 +6921,11 @@ package Sinfo is
       --  Statements
       --  End_Label (set to Empty if expander generated)
       --  Exception_Handlers (set to No_List if none present)
+      --  Finally_Statements (set to No_List if no finally statements)
       --  At_End_Proc (set to Empty if no clean up procedure)
 
-      --  Note: A Handled_Sequence_Of_Statements can contain both
-      --  Exception_Handlers and an At_End_Proc.
+      --  Note: An N_Handled_Sequence_Of_Statements node can simultaneously
+      --  contain Exception_Handlers, Finally_Statements and an At_End_Proc.
 
       --  Note: the parent always contains a Declarations field which contains
       --  declarations associated with the handled sequence of statements. This

Reply via email to