ada: Run-time error with GNAT-LLVM on container aggregate with finalization

When unnesting is enabled, the compiler was failing to copy the At_End_Proc
field from a block statement to the procedure created to replace it when
unnesting of top-level blocks is done.  At run time this could lead to
exceptions due to missing finalization calls.

gcc/ada/

	* exp_ch7.adb (Unnest_Block): Copy the At_End_Proc from the block
	statement to the newly created subprogram body.
This commit is contained in:
Gary Dismukes 2024-07-30 23:08:17 +00:00 committed by Marc Poulhiès
parent 352d1478bc
commit 85f2ffd80e

View file

@ -8932,7 +8932,8 @@ package body Exp_Ch7 is
Defining_Unit_Name => Local_Proc),
Declarations => Declarations (Decl),
Handled_Statement_Sequence =>
Handled_Statement_Sequence (Decl));
Handled_Statement_Sequence (Decl),
At_End_Proc => New_Copy_Tree (At_End_Proc (Decl)));
-- Handlers in the block may contain nested subprograms that require
-- unnesting.