From f8dae9bb29d4dffc332c5a0670ff814816c87731 Mon Sep 17 00:00:00 2001 From: Arnaud Charlet Date: Tue, 12 May 2015 10:36:45 +0200 Subject: [multiple changes] 2015-05-12 Robert Dewar * sem_ch3.adb: Minor reformatting. 2015-05-12 Vincent Celier * gnatcmd.adb: If we want to invoke gnatmake (gnatclean) with -P, then check if gprbuild (gprclean) is available; if it is, use gprbuild (gprclean) instead of gnatmake (gnatclean). 2015-05-12 Robert Dewar * debug.adb: Add flag -gnatd.3 to output diagnostic info from Exp_Unst. * einfo.ad, einfo.adb: Reorganize (and remove most of) flags used by Exp_Unst. * exp_ch6.adb (Unest_Bodies): Table for delayed calls to Unnest_Subprogram (Expand_N_Subprogram_Body): Add entry to table for later call instead of calling Unnest_Subprogram directly (Initialize): New procedure (Unnest_Subprograms): New procedure * exp_ch6.ads (Add_Extra_Actual_To_Call): Move into proper alpha order. (Initialize): New procedure. (Unnest_Subprograms): New procedure. * exp_unst.adb (Unnest_Subprogram): Major rewrite, moving all processing to this routine which is now called late after instantiating bodies. Fully handles the case of generic instantiations now. * exp_unst.ads: Major rewrite, moving all processing to Unnest_Subprogram. * frontend.adb (Frontend): Add call to Exp_Ch6.Initialize. (Frontend): Add call to Unnest_Subprograms. * sem_ch8.adb (Find_Direct_Name): Back to old calling sequence for Check_Nested_Access. * sem_util.adb (Build_Default_Subtype): Minor reformatting (Check_Nested_Access): Back to original VM-only form (we now do all the processing for Unnest_Subprogram at the time it is called. (Denotes_Same_Object): Minor reformatting (Note_Possible_Modification): Old calling sequence for Check_Nested_Access. * sem_util.ads (Check_Nested_Access): Back to original VM-only form (we now do all the processing for Unnest_Subprogram at the time it is called. From-SVN: r223043 --- gcc/ada/frontend.adb | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'gcc/ada/frontend.adb') diff --git a/gcc/ada/frontend.adb b/gcc/ada/frontend.adb index bab0b46..ba90379 100644 --- a/gcc/ada/frontend.adb +++ b/gcc/ada/frontend.adb @@ -30,6 +30,7 @@ with Checks; with CStand; with Debug; use Debug; with Elists; +with Exp_Ch6; with Exp_Dbug; with Fmap; with Fname.UF; @@ -90,6 +91,7 @@ begin Checks.Initialize; Sem_Warn.Initialize; Prep.Initialize; + Exp_Ch6.Initialize; if Generate_SCIL then SCIL_LL.Initialize; @@ -408,13 +410,6 @@ begin -- Cleanup processing after completing main analysis - -- Turn off unnesting of subprograms mode. This is not right - -- with respect to instantiations. What needs to happen is that - -- we do the unnesting AFTER the call to Instantiate_Bodies. We - -- will take care of that later ??? - - Opt.Unnest_Subprogram_Mode := False; - -- Comment needed for ASIS mode test and GNATprove mode test??? if Operating_Mode = Generate_Code @@ -444,6 +439,10 @@ begin Remove_Ignored_Ghost_Code; end if; + -- At this stage we can unnest subprogram bodies if required + + Exp_Ch6.Unnest_Subprograms; + -- List library units if requested if List_Units then -- cgit v1.1