ada: Fix another minor fallout of previous changes to aggregate expansion

This is another glitch associated with Initialization_Statements.

gcc/ada/ChangeLog:

	* exp_util.adb (Remove_Init_Call): Rewrite a compound statement in
	the Initialization_Statements of the variable as a null statement
	instead of removing it.
	* freeze.adb (Explode_Initialization_Compound_Statement): Small
	comment tweaks.
This commit is contained in:
Eric Botcazou 2024-11-08 11:01:11 +01:00 committed by Marc Poulhiès
parent 1b24e30cab
commit b4fd15d8be
2 changed files with 18 additions and 2 deletions

View File

@ -12124,6 +12124,22 @@ package body Exp_Util is
Init_Call := Initialization_Statements (Var);
Set_Initialization_Statements (Var, Empty);
-- Note that we rewrite Init_Call into a null statement, rather than
-- just removing it, because Freeze_All may rely on this particular
-- node still being present in the enclosing list to know where to
-- stop freezing (see Explode_Initialization_Compound_Statement).
if Nkind (Init_Call) = N_Compound_Statement then
declare
Init_Actions : constant List_Id := Actions (Init_Call);
Loc : constant Source_Ptr := Sloc (Init_Call);
begin
Rewrite (Init_Call, Make_Null_Statement (Loc));
return Make_Compound_Statement (Loc, Init_Actions);
end;
end if;
elsif not Has_Non_Null_Base_Init_Proc (Typ) then
-- No init proc for the type, so obviously no call to be found

View File

@ -2471,9 +2471,9 @@ package body Freeze is
Insert_List_Before (Init_Stmts, Actions (Init_Stmts));
end if;
-- Note that we rewrite Init_Stmts into a NULL statement, rather than
-- Note that we rewrite Init_Stmts into a null statement, rather than
-- just removing it, because Freeze_All may rely on this particular
-- Node_Id still being present in the enclosing list to know where to
-- node still being present in the enclosing list to know where to
-- stop freezing.
Rewrite (Init_Stmts, Make_Null_Statement (Sloc (Init_Stmts)));