https://gcc.gnu.org/g:4b330318626ec5907436aea8eb9c326da85f1e61

commit r15-6525-g4b330318626ec5907436aea8eb9c326da85f1e61
Author: Eric Botcazou <ebotca...@adacore.com>
Date:   Wed Dec 4 12:35:29 2024 +0100

    ada: Fix small thinko in previous change
    
    Even if the declaration of the conditional object is turned into a renaming
    during expansion, the conditional object must be finalized when the original
    object would have been.
    
    gcc/ada/ChangeLog:
    
            * exp_ch4.adb (Insert_Conditional_Object_Declaration): Create the
            Master_Node even if the declaration is turned into a renaming.

Diff:
---
 gcc/ada/exp_ch4.adb | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb
index 2fc891a4e390..f44f21d654bb 100644
--- a/gcc/ada/exp_ch4.adb
+++ b/gcc/ada/exp_ch4.adb
@@ -13240,9 +13240,7 @@ package body Exp_Ch4 is
       --  cannot invoke Process_Transients_In_Expression on it since it is not
       --  a transient object (it has the lifetime of the original object).
 
-      if Nkind (Obj_Decl) = N_Object_Declaration
-        and then Needs_Finalization (Base_Type (Etype (Obj_Id)))
-      then
+      if Needs_Finalization (Base_Type (Etype (Obj_Id))) then
          Master_Node_Id := Make_Temporary (Loc, 'N');
          Master_Node_Decl :=
            Make_Master_Node_Declaration (Loc, Master_Node_Id, Obj_Id);

Reply via email to