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
