From 52739835a1902dfe18f439c64a30e15374619e29 Mon Sep 17 00:00:00 2001 From: Javier Miranda Date: Fri, 9 Dec 2005 18:16:47 +0100 Subject: [PATCH] exp_aggr.adb (Build_Record_Aggr_Code): Default-initialialized records with IP subprogram were only supported if... 2005-12-05 Javier Miranda * exp_aggr.adb (Build_Record_Aggr_Code): Default-initialialized records with IP subprogram were only supported if there were limited types. * sem_aggr.adb (Resolve_Record_Aggregate): Default-initialialized records with IP subprogram were only supported if there were limited types. From-SVN: r108289 --- gcc/ada/exp_aggr.adb | 5 +++-- gcc/ada/sem_aggr.adb | 13 +++++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb index 6699b422c24..9c9508fa5cc 100644 --- a/gcc/ada/exp_aggr.adb +++ b/gcc/ada/exp_aggr.adb @@ -2358,10 +2358,11 @@ package body Exp_Aggr is while Present (Comp) loop Selector := Entity (First (Choices (Comp))); - -- Ada 2005 (AI-287): Default initialization of a limited component + -- Ada 2005 (AI-287): For each default-initialized component genarate + -- a call to the corresponding IP subprogram if available. if Box_Present (Comp) - and then Is_Limited_Type (Etype (Selector)) + and then Has_Non_Null_Base_Init_Proc (Etype (Selector)) then -- Ada 2005 (AI-287): If the component type has tasks then -- generate the activation chain and master entities (except diff --git a/gcc/ada/sem_aggr.adb b/gcc/ada/sem_aggr.adb index b67a6a85fcb..8890ffc43dc 100644 --- a/gcc/ada/sem_aggr.adb +++ b/gcc/ada/sem_aggr.adb @@ -29,6 +29,7 @@ with Checks; use Checks; with Einfo; use Einfo; with Elists; use Elists; with Errout; use Errout; +with Exp_Tss; use Exp_Tss; with Exp_Util; use Exp_Util; with Freeze; use Freeze; with Itypes; use Itypes; @@ -2984,11 +2985,15 @@ package body Sem_Aggr is Component := Node (Component_Elmt); Expr := Get_Value (Component, Component_Associations (N), True); - -- Ada 2005 (AI-287): Default initialized limited component are - -- passed to the expander, that will generate calls to the - -- corresponding IP. + -- Ada 2005 (AI-287): Although the default initialization by means + -- of the mbox was initially added to Ada 2005 for limited types, it + -- is not constrained to limited types. Therefore if the component + -- has some initialization procedure (IP) we pass the component to + -- the expander, which will generate the call to such IP. - if Mbox_Present and then Is_Limited_Type (Etype (Component)) then + if Mbox_Present + and then Has_Non_Null_Base_Init_Proc (Etype (Component)) + then Add_Association (Component => Component, Expr => Empty, -- 2.30.2