From e85f4337c3c9ced8e7eece753962443d230b487f Mon Sep 17 00:00:00 2001 From: Hristian Kirtchev Date: Mon, 4 Aug 2014 12:55:46 +0000 Subject: [PATCH] sem_ch3.adb (Analyze_Declarations): Explain why the bodies of the default initial condition procedures are build here. 2014-08-04 Hristian Kirtchev * sem_ch3.adb (Analyze_Declarations): Explain why the bodies of the default initial condition procedures are build here. * sem_util.adb (Build_Default_Init_Cond_Procedure): Wrap the analyzed argument of pragma Default_Initial_Condition in some dummy code as GNATprove mode disables assertions, but still needs to see the argument. From-SVN: r213582 --- gcc/ada/ChangeLog | 9 +++++++++ gcc/ada/sem_ch3.adb | 12 +++++++++--- gcc/ada/sem_util.adb | 2 +- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 3f10d889e190..d210982df140 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,12 @@ +2014-08-04 Hristian Kirtchev + + * sem_ch3.adb (Analyze_Declarations): Explain why the bodies of + the default initial condition procedures are build here. + * sem_util.adb (Build_Default_Init_Cond_Procedure): Wrap the + analyzed argument of pragma Default_Initial_Condition in some + dummy code as GNATprove mode disables assertions, but still + needs to see the argument. + 2014-08-04 Robert Dewar * exp_ch6.adb, sem_util.adb: Minor reformatting. diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index 5b16aa2477aa..351ae87b52cf 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -2388,12 +2388,18 @@ package body Sem_Ch3 is -- When a package has private declarations, its contract must be -- analyzed at the end of the said declarations. This way both the -- analysis and freeze actions are properly synchronized in case - -- of private type use within the contract. Build the bodies of - -- the default initial condition procedures for all types subject - -- to pragma Default_Initial_Condition. + -- of private type use within the contract. if L = Private_Declarations (Context) then Analyze_Package_Contract (Defining_Entity (Context)); + + -- Build the bodies of the default initial condition procedures + -- for all types subject to pragma Default_Initial_Condition. + -- From a purely Ada stand point, this is a freezing activity, + -- however freezing is not available under GNATprove_Mode. To + -- accomodate both scenarios, the bodies are build at the end + -- of private declaration analysis. + Build_Default_Init_Cond_Procedure_Bodies (L); -- Otherwise the contract is analyzed at the end of the visible diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index 67599035b216..01c16244621b 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -1298,7 +1298,7 @@ package body Sem_Util is Expr : Node_Id; Stmt : Node_Id; - -- Start of processing for Build_Default_Init_Cond_Procedure + -- Start of processing for Build_Default_Init_Cond_Procedure_Body begin -- The procedure should be generated only for [sub]types subject to -- 2.47.3