From 0b07d69c7934a5bebb7e10e7cab8c8559eca19e5 Mon Sep 17 00:00:00 2001 From: charlet Date: Fri, 12 Apr 2013 12:55:34 +0000 Subject: [PATCH] 2013-04-12 Hristian Kirtchev * sem_ch13.adb (Analyze_Aspect_Specifications): Insert the corresponding pragma for aspect Abstract_State at the top of the visible declarations of the related package. Previously this was only done when the package is a compilation unit. 2013-04-12 Arnaud Charlet * gnat_ugn.texi: Further menu clean ups. * sem_prag.adb, opt.ads: Minor reformatting. * sem_util.ads: Minor comment fix. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@197901 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ada/ChangeLog | 14 +++ gcc/ada/gnat_ugn.texi | 343 +------------------------------------------------- gcc/ada/opt.ads | 21 ++-- gcc/ada/sem_ch13.adb | 31 ++--- gcc/ada/sem_prag.adb | 5 +- gcc/ada/sem_util.ads | 3 +- 6 files changed, 45 insertions(+), 372 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 9dc6062..c19dd7f 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,5 +1,19 @@ 2013-04-12 Hristian Kirtchev + * sem_ch13.adb (Analyze_Aspect_Specifications): + Insert the corresponding pragma for aspect Abstract_State at + the top of the visible declarations of the related package. + Previously this was only done when the package is a compilation + unit. + +2013-04-12 Arnaud Charlet + + * gnat_ugn.texi: Further menu clean ups. + * sem_prag.adb, opt.ads: Minor reformatting. + * sem_util.ads: Minor comment fix. + +2013-04-12 Hristian Kirtchev + * sem_ch13.adb (Analyze_Aspect_Specifications): Aspect Depends is now a delayed aspect. The delay is required due to the interplay between aspects Depends and Global. diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index 8d46f70..e1cd61a 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -216,347 +216,6 @@ AdaCore@* * Mac OS Topics:: * GNU Free Documentation License:: * Index:: - - --- Detailed Contents --- - -About This Guide -* What This Guide Contains:: -* What You Should Know before Reading This Guide:: -* Related Information:: -* Conventions:: - -Getting Started with GNAT -* Running GNAT:: -* Running a Simple Ada Program:: -* Running a Program with Multiple Units:: -* Using the gnatmake Utility:: -@ifset vms -* Editing with Emacs:: -@end ifset -@ifclear vms -* Introduction to GPS:: -@end ifclear - -The GNAT Compilation Model -* Source Representation:: -* Foreign Language Representation:: -* File Naming Rules:: -* Using Other File Names:: -* Alternative File Naming Schemes:: -* Generating Object Files:: -* Source Dependencies:: -* The Ada Library Information Files:: -* Binding an Ada Program:: -* Mixed Language Programming:: -@ifclear vms -* Building Mixed Ada & C++ Programs:: -* Comparison between GNAT and C/C++ Compilation Models:: -@end ifclear -* Comparison between GNAT and Conventional Ada Library Models:: -@ifset vms -* Placement of temporary files:: -@end ifset - -Compiling with gcc -* Compiling Programs:: -* Switches for gcc:: -* Search Paths and the Run-Time Library (RTL):: -* Order of Compilation Issues:: -* Examples:: - -Binding with gnatbind -* Running gnatbind:: -* Switches for gnatbind:: -* Command-Line Access:: -* Search Paths for gnatbind:: -* Examples of gnatbind Usage:: - -Linking with gnatlink -* Running gnatlink:: -* Switches for gnatlink:: - -The GNAT Make Program gnatmake -* Running gnatmake:: -* Switches for gnatmake:: -* Mode Switches for gnatmake:: -* Notes on the Command Line:: -* How gnatmake Works:: -* Examples of gnatmake Usage:: - -Improving Performance -* Performance Considerations:: -* Text_IO Suggestions:: -* Reducing Size of Ada Executables with gnatelim:: -* Reducing Size of Executables with unused subprogram/data elimination:: - -Renaming Files with gnatchop -* Handling Files with Multiple Units:: -* Operating gnatchop in Compilation Mode:: -* Command Line for gnatchop:: -* Switches for gnatchop:: -* Examples of gnatchop Usage:: - -Configuration Pragmas -* Handling of Configuration Pragmas:: -* The Configuration Pragmas Files:: - -Handling Arbitrary File Naming Conventions with gnatname -* Arbitrary File Naming Conventions:: -* Running gnatname:: -* Switches for gnatname:: -* Examples of gnatname Usage:: - -GNAT Project Manager -* Introduction:: -* Building With Projects:: -* Organizing Projects into Subsystems:: -* Scenarios in Projects:: -* Library Projects:: -* Project Extension:: -* Aggregate Projects:: -* Aggregate Library Projects:: -* Project File Reference:: - -Tools Supporting Project Files -* gnatmake and Project Files:: -* The GNAT Driver and Project Files:: - -The Cross-Referencing Tools gnatxref and gnatfind -* Switches for gnatxref:: -* Switches for gnatfind:: -* Project Files for gnatxref and gnatfind:: -* Regular Expressions in gnatfind and gnatxref:: -* Examples of gnatxref Usage:: -* Examples of gnatfind Usage:: - -The GNAT Pretty-Printer gnatpp -* Switches for gnatpp:: -* Formatting Rules:: - -The GNAT Metrics Tool gnatmetric -* Switches for gnatmetric:: - -File Name Krunching with gnatkr -* About gnatkr:: -* Using gnatkr:: -* Krunching Method:: -* Examples of gnatkr Usage:: - -Preprocessing with gnatprep -* Preprocessing Symbols:: -* Using gnatprep:: -* Switches for gnatprep:: -* Form of Definitions File:: -* Form of Input Text for gnatprep:: - -The GNAT Library Browser gnatls -* Running gnatls:: -* Switches for gnatls:: -* Examples of gnatls Usage:: - -Cleaning Up with gnatclean -* Running gnatclean:: -* Switches for gnatclean:: -@c * Examples of gnatclean Usage:: - -@ifclear vms -GNAT and Libraries -* Introduction to Libraries in GNAT:: -* General Ada Libraries:: -* Stand-alone Ada Libraries:: -* Rebuilding the GNAT Run-Time Library:: - -Using the GNU make Utility -* Using gnatmake in a Makefile:: -* Automatically Creating a List of Directories:: -* Generating the Command Line Switches:: -* Overcoming Command Line Length Limits:: -@end ifclear - -Memory Management Issues -* Some Useful Memory Pools:: -* The GNAT Debug Pool Facility:: -@ifclear vms -* The gnatmem Tool:: -@end ifclear - -Stack Related Facilities -* Stack Overflow Checking:: -* Static Stack Usage Analysis:: -* Dynamic Stack Usage Analysis:: - -Verifying Properties with gnatcheck - -Creating Sample Bodies with gnatstub -* Running gnatstub:: -* Switches for gnatstub:: - -Creating Unit Tests with gnattest -* Running gnattest:: -* Switches for gnattest:: -* Project Attributes for gnattest:: -* Simple Example:: -* Setting Up and Tearing Down the Testing Environment:: -* Regenerating Tests:: -* Default Test Behavior:: -* Testing Primitive Operations of Tagged Types:: -* Testing Inheritance:: -* Tagged Types Substitutability Testing:: -* Testing with Contracts:: -* Additional Tests:: -@ifclear vms -* Support for other platforms/run-times:: -@end ifclear -* Current Limitations:: - -Performing Dimensionality Analysis in GNAT - -Generating Ada Bindings for C and C++ headers -* Running the binding generator:: -* Generating bindings for C++ headers:: -* Switches:: - -Other Utility Programs -* Using Other Utility Programs with GNAT:: -* The External Symbol Naming Scheme of GNAT:: -* Converting Ada Files to html with gnathtml:: -* Installing gnathtml:: -@ifset vms -* LSE:: -* Profiling:: -@end ifset - -@ifclear vms -Code Coverage and Profiling -* Code Coverage of Ada Programs with gcov:: -* Profiling an Ada Program with gprof:: -@end ifclear - -Running and Debugging Ada Programs -* The GNAT Debugger GDB:: -* Running GDB:: -* Introduction to GDB Commands:: -* Using Ada Expressions:: -* Calling User-Defined Subprograms:: -* Using the Next Command in a Function:: -* Ada Exceptions:: -* Ada Tasks:: -* Debugging Generic Units:: -* Remote Debugging with gdbserver:: -* GNAT Abnormal Termination or Failure to Terminate:: -* Naming Conventions for GNAT Source Files:: -* Getting Internal Debugging Information:: -* Stack Traceback:: - -@ifset vms -Compatibility with HP Ada -* Ada Language Compatibility:: -* Differences in the Definition of Package System:: -* Language-Related Features:: -* The Package STANDARD:: -* The Package SYSTEM:: -* Tasking and Task-Related Features:: -* Pragmas and Pragma-Related Features:: -* Library of Predefined Units:: -* Bindings:: -* Main Program Definition:: -* Implementation-Defined Attributes:: -* Compiler and Run-Time Interfacing:: -* Program Compilation and Library Management:: -* Input-Output:: -* Implementation Limits:: -* Tools and Utilities:: -@end ifset - -Platform-Specific Information for the Run-Time Libraries -* Summary of Run-Time Configurations:: -* Specifying a Run-Time Library:: -* Choosing the Scheduling Policy:: -* Solaris-Specific Considerations:: -* Linux-Specific Considerations:: -* AIX-Specific Considerations:: -* RTX-Specific Considerations:: -* HP-UX-Specific Considerations:: - -Example of Binder Output File - -Elaboration Order Handling in GNAT -* Elaboration Code:: -* Checking the Elaboration Order:: -* Controlling the Elaboration Order:: -* Controlling Elaboration in GNAT - Internal Calls:: -* Controlling Elaboration in GNAT - External Calls:: -* Default Behavior in GNAT - Ensuring Safety:: -* Treatment of Pragma Elaborate:: -* Elaboration Issues for Library Tasks:: -* Mixing Elaboration Models:: -* What to Do If the Default Elaboration Behavior Fails:: -* Elaboration for Dispatching Calls:: -* Summary of Procedures for Elaboration Control:: -* Other Elaboration Order Considerations:: - -Overflow Check Handling in GNAT -* Background:: -* Overflow Checking Modes in GNAT:: -* Specifying the Desired Mode:: -* Default Settings:: -* Implementation Notes:: - -Conditional Compilation -* Use of Boolean Constants:: -* Debugging - A Special Case:: -* Conditionalizing Declarations:: -* Use of Alternative Implementations:: -* Preprocessing:: - -Inline Assembler -* Basic Assembler Syntax:: -* A Simple Example of Inline Assembler:: -* Output Variables in Inline Assembler:: -* Input Variables in Inline Assembler:: -* Inlining Inline Assembler Code:: -* Other Asm Functionality:: - -Compatibility and Porting Guide -* Compatibility with Ada 83:: -* Compatibility between Ada 95 and Ada 2005:: -* Implementation-dependent characteristics:: -* Compatibility with Other Ada Systems:: -* Representation Clauses:: -@ifclear vms -@c This brief section is only in the non-VMS version -@c The complete chapter on HP Ada issues is in the VMS version -* Compatibility with HP Ada 83:: -@end ifclear -@ifset vms -* Transitioning to 64-Bit GNAT for OpenVMS:: -@end ifset - -Microsoft Windows Topics -@ifclear FSFEDITION -* Installing from the Command Line:: -@end ifclear -* Using GNAT on Windows:: -* Using a network installation of GNAT:: -* CONSOLE and WINDOWS subsystems:: -* Temporary Files:: -* Mixed-Language Programming on Windows:: -* Windows Calling Conventions:: -* Introduction to Dynamic Link Libraries (DLLs):: -* Using DLLs with GNAT:: -* Building DLLs with GNAT:: -* Building DLLs with gnatdll:: -* GNAT and Windows Resources:: -* Debugging a DLL:: -* Setting Stack Size from gnatlink:: -* Setting Heap Size from gnatlink:: - -Mac OS Topics -* Codesigning the Debugger:: - -GNU Free Documentation License - -Index @end menu @end ifnottex @@ -31080,7 +30739,7 @@ the location where you installed GNAT. @include fdl.texi @c GNU Free Documentation License -@node Index,,GNU Free Documentation License, Top +@node Index @unnumbered Index @printindex cp diff --git a/gcc/ada/opt.ads b/gcc/ada/opt.ads index 68429a8..03580fe 100644 --- a/gcc/ada/opt.ads +++ b/gcc/ada/opt.ads @@ -602,21 +602,20 @@ package Opt is Float_Format : Character := ' '; -- GNAT -- A non-blank value indicates that a Float_Format pragma has been - -- processed, in which case this variable is set to 'I' for IEEE or - -- to 'V' for VAX. The setting of 'V' is only possible on OpenVMS - -- versions of GNAT. + -- processed, in which case this variable is set to 'I' for IEEE or to + -- 'V' for VAX. The setting of 'V' is only possible on OpenVMS versions + -- of GNAT. Float_Format_Long : Character := ' '; -- GNAT - -- A non-blank value indicates that a Long_Float pragma has been - -- processed (this pragma is recognized only in OpenVMS versions - -- of GNAT), in which case this variable is set to D or G for - -- D_Float or G_Float. + -- A non-blank value indicates that a Long_Float pragma has been processed + -- (this pragma is recognized only in OpenVMS versions of GNAT), in which + -- case this variable is set to D or G for D_Float or G_Float. Force_ALI_Tree_File : Boolean := False; -- GNAT - -- Force generation of ALI file even if errors are encountered. - -- Also forces generation of tree file if -gnatt is also set. + -- Force generation of ALI file even if errors are encountered. Also forces + -- generation of tree file if -gnatt is also set. Set on by use of -gnatQ. Disable_ALI_File : Boolean := False; -- GNAT @@ -1404,12 +1403,12 @@ package Opt is -- Flag set to force attempt at semantic analysis, even if parser errors -- occur. This will probably cause blowups at this stage in the game. On -- the other hand, most such blowups will be caught cleanly and simply - -- say compilation abandoned. This flag is set to True by -gnatq or -gnatQ. + -- say compilation abandoned. This flag is set on by -gnatq or -gnatQ. Unchecked_Shared_Lib_Imports : Boolean := False; -- GPRBUILD -- Set to True when shared library projects are allowed to import projects - -- that are not shared library projects. Set by switch + -- that are not shared library projects. Set on by use of the switch -- --unchecked-shared-lib-imports. Undefined_Symbols_Are_False : Boolean := False; diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb index 4c8bbc1..d06398a 100644 --- a/gcc/ada/sem_ch13.adb +++ b/gcc/ada/sem_ch13.adb @@ -1968,12 +1968,27 @@ package body Sem_Ch13 is end if; end if; + -- Aspect Abstract_State introduces implicit declarations for all + -- state abstraction entities it defines. To emulate this behavior + -- insert the pragma at the start of the visible declarations of + -- the related package. + + if Nam = Name_Abstract_State + and then Nkind (N) = N_Package_Declaration + then + if No (Visible_Declarations (Specification (N))) then + Set_Visible_Declarations (Specification (N), New_List); + end if; + + Prepend (Aitem, Visible_Declarations (Specification (N))); + goto Continue; + -- In the context of a compilation unit, we directly put the -- pragma in the Pragmas_After list of the -- N_Compilation_Unit_Aux node (no delay is required here) -- except for aspects on a subprogram body (see below). - if Nkind (Parent (N)) = N_Compilation_Unit + elsif Nkind (Parent (N)) = N_Compilation_Unit and then (Present (Aitem) or else Is_Boolean_Aspect (Aspect)) then declare @@ -2014,20 +2029,6 @@ package body Sem_Ch13 is Prepend (Aitem, Declarations (N)); - -- Aspect Abstract_State produces implicit declarations for - -- all state abstraction entities it defines. To emulate - -- this behavior, insert the pragma at the start of the - -- visible declarations of the related package. - - elsif Nam = Name_Abstract_State - and then Nkind (N) = N_Package_Declaration - then - if No (Visible_Declarations (Specification (N))) then - Set_Visible_Declarations (Specification (N), New_List); - end if; - - Prepend (Aitem, Visible_Declarations (Specification (N))); - else if No (Pragmas_After (Aux)) then Set_Pragmas_After (Aux, New_List); diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index 6efd878..9616c6f 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -9330,9 +9330,8 @@ package body Sem_Prag is begin if Is_Input then if Ekind (Item_Id) = E_Out_Parameter - or else - (Global_Seen - and then not Appears_In (Subp_Inputs, Item_Id)) + or else (Global_Seen + and then not Appears_In (Subp_Inputs, Item_Id)) then Error_Msg_NE ("item & must have mode in or in out", Item, Item_Id); diff --git a/gcc/ada/sem_util.ads b/gcc/ada/sem_util.ads index 5cd1ab6..1296786 100644 --- a/gcc/ada/sem_util.ads +++ b/gcc/ada/sem_util.ads @@ -1453,7 +1453,8 @@ package Sem_Util is procedure Set_Entity_With_Style_Check (N : Node_Id; Val : Entity_Id); -- This procedure has the same calling sequence as Set_Entity, but -- if Style_Check is set, then it calls a style checking routine which - -- can check identifier spelling style. + -- can check identifier spelling style. This procedure also takes care + -- of checking the restriction No_Implementation_Identifiers. procedure Set_Name_Entity_Id (Id : Name_Id; Val : Entity_Id); pragma Inline (Set_Name_Entity_Id); -- 2.7.4