gnat_ugn.texi: Dcoument new rules for style check comment alignment Document that...
authorRobert Dewar <dewar@adacore.com>
Thu, 13 Dec 2007 10:42:14 +0000 (11:42 +0100)
committerArnaud Charlet <charlet@gcc.gnu.org>
Thu, 13 Dec 2007 10:42:14 +0000 (11:42 +0100)
2007-12-06  Robert Dewar  <dewar@adacore.com>
    Bob Duff  <duff@adacore.com>

* gnat_ugn.texi: Dcoument new rules for style check comment alignment
Document that suffixes may be terminations of each others
Add doc for -gnatw.a and -gnatw.A
Document gnatbind -Wx switch
Document BOM recognition
Document pragma Implemented_By_Entry.
Document new units.

* gnat_rm.texi: (Favor_Top_Level): Document new pragma.
Add doc for pragma Unreferenced suppressing no entities referenced msg
Add documentation of GNAT.Directory_Operations.Iteration
Add documentation of GNAT.Random_Numbers
Add documentation for pragma Shared.
Correct documentation for Bit_Order
Add documentation for the Pool_Address attribute.
Fix and improve documentation of pragma machine_attribute.
New pragma Fast_Math
Document BOM recognition

* vms_data.ads: Add entries for -gnatw.a -gnatw.A
Add /Wide_Character_Encoding for binder
Add qualifier for the new gnatpp option --no-separate-loop-then

From-SVN: r130872

gcc/ada/gnat_rm.texi
gcc/ada/gnat_ugn.texi
gcc/ada/vms_data.ads

index cf6e9c66bde384518705f5324e82cdc889e836b6..cf2db497cac03f168b0d83582cc6a275883fa094 100644 (file)
@@ -135,9 +135,12 @@ Implementation Defined Pragmas
 * Pragma Extend_System::
 * Pragma External::
 * Pragma External_Name_Casing::
+* Pragma Fast_Math::
+* Pragma Favor_Top_Level::
 * Pragma Finalize_Storage_Only::
 * Pragma Float_Representation::
 * Pragma Ident::
+* Pragma Implemented_By_Entry::
 * Pragma Implicit_Packing::
 * Pragma Import_Exception::
 * Pragma Import_Function::
@@ -175,6 +178,7 @@ Implementation Defined Pragmas
 * Pragma Psect_Object::
 * Pragma Pure_Function::
 * Pragma Restriction_Warnings::
+* Pragma Shared::
 * Pragma Source_File_Name::
 * Pragma Source_File_Name_Project::
 * Pragma Source_Reference::
@@ -238,6 +242,7 @@ Implementation Defined Attributes
 * Null_Parameter::
 * Object_Size::
 * Passed_By_Reference::
+* Pool_Address::
 * Range_Length::
 * Safe_Emax::
 * Safe_Large::
@@ -305,6 +310,7 @@ The GNAT Library
 * GNAT.Bubble_Sort (g-bubsor.ads)::
 * GNAT.Bubble_Sort_A (g-busora.ads)::
 * GNAT.Bubble_Sort_G (g-busorg.ads)::
+* GNAT.Byte_Order_Mark (g-byorma.ads)::
 * GNAT.Byte_Swapping (g-bytswa.ads)::
 * GNAT.Calendar (g-calend.ads)::
 * GNAT.Calendar.Time_IO (g-catiio.ads)::
@@ -319,9 +325,14 @@ The GNAT Library
 * GNAT.Current_Exception (g-curexc.ads)::
 * GNAT.Debug_Pools (g-debpoo.ads)::
 * GNAT.Debug_Utilities (g-debuti.ads)::
+* GNAT.Decode_String (g-decstr.ads)::
+* GNAT.Decode_UTF8_String (g-deutst.ads)::
 * GNAT.Directory_Operations (g-dirope.ads)::
+* GNAT.Directory_Operations.Iteration (g-diopit.ads)::
 * GNAT.Dynamic_HTables (g-dynhta.ads)::
 * GNAT.Dynamic_Tables (g-dyntab.ads)::
+* GNAT.Encode_String (g-encstr.ads)::
+* GNAT.Encode_UTF8_String (g-enutst.ads)::
 * GNAT.Exception_Actions (g-excact.ads)::
 * GNAT.Exception_Traces (g-exctra.ads)::
 * GNAT.Exceptions (g-except.ads)::
@@ -339,6 +350,7 @@ The GNAT Library
 * GNAT.Most_Recent_Exception (g-moreex.ads)::
 * GNAT.OS_Lib (g-os_lib.ads)::
 * GNAT.Perfect_Hash_Generators (g-pehage.ads)::
+* GNAT.Random_Numbers (g-rannum.ads)
 * GNAT.Regexp (g-regexp.ads)::
 * GNAT.Registry (g-regist.ads)::
 * GNAT.Regpat (g-regpat.ads)::
@@ -348,7 +360,8 @@ The GNAT Library
 * GNAT.Signals (g-signal.ads)::
 * GNAT.Sockets (g-socket.ads)::
 * GNAT.Source_Info (g-souinf.ads)::
-* GNAT.Spell_Checker (g-speche.ads)::
+* GNAT.Spelling_Checker (g-speche.ads)::
+* GNAT.Spelling_Checker_Generic (g-spchge.ads)::
 * GNAT.Spitbol.Patterns (g-spipat.ads)::
 * GNAT.Spitbol (g-spitbo.ads)::
 * GNAT.Spitbol.Table_Boolean (g-sptabo.ads)::
@@ -361,7 +374,11 @@ The GNAT Library
 * GNAT.Threads (g-thread.ads)::
 * GNAT.Traceback (g-traceb.ads)::
 * GNAT.Traceback.Symbolic (g-trasym.ads)::
+* GNAT.UTF_32 (g-utf_32.ads)::
+* GNAT.UTF_32_Spelling_Checker (g-u3spch.ads)::
+* GNAT.Wide_Spelling_Checker (g-wispch.ads)::
 * GNAT.Wide_String_Split (g-wistsp.ads)::
+* GNAT.Wide_Wide_Spelling_Checker (g-zspche.ads)::
 * GNAT.Wide_Wide_String_Split (g-zistsp.ads)::
 * Interfaces.C.Extensions (i-cexten.ads)::
 * Interfaces.C.Streams (i-cstrea.ads)::
@@ -658,11 +675,11 @@ Manual.
 
 In addition, Ada allows implementations to define additional pragmas
 whose meaning is defined by the implementation.  GNAT provides a number
-of these implementation-dependent pragmas which can be used to extend
+of these implementation-defined pragmas, which can be used to extend
 and enhance the functionality of the compiler.  This section of the GNAT
 Reference Manual describes these additional pragmas.
 
-Note that any program using these pragmas may not be portable to other
+Note that any program using these pragmas might not be portable to other
 compilers (although GNAT implements this set of pragmas on all
 platforms).  Therefore if portability to other compilers is an important
 consideration, the use of these pragmas should be minimized.
@@ -704,9 +721,12 @@ consideration, the use of these pragmas should be minimized.
 * Pragma Extend_System::
 * Pragma External::
 * Pragma External_Name_Casing::
+* Pragma Fast_Math::
+* Pragma Favor_Top_Level::
 * Pragma Finalize_Storage_Only::
 * Pragma Float_Representation::
 * Pragma Ident::
+* Pragma Implemented_By_Entry::
 * Pragma Implicit_Packing::
 * Pragma Import_Exception::
 * Pragma Import_Function::
@@ -744,6 +764,7 @@ consideration, the use of these pragmas should be minimized.
 * Pragma Psect_Object::
 * Pragma Pure_Function::
 * Pragma Restriction_Warnings::
+* Pragma Shared::
 * Pragma Source_File_Name::
 * Pragma Source_File_Name_Project::
 * Pragma Source_Reference::
@@ -807,7 +828,7 @@ which it applies, regardless of the mode set by the command line
 switches.  In Ada 83 mode, GNAT attempts to be as compatible with
 the syntax and semantics of Ada 83, as defined in the original Ada
 83 Reference Manual as possible.  In particular, the keywords added by Ada 95
-(and Ada 2005) are not recognized, optional package bodies are allowed,
+and Ada 2005 are not recognized, optional package bodies are allowed,
 and generics may name types with unknown discriminants without using
 the @code{(<>)} notation.  In addition, some but not all of the additional
 restrictions of Ada 83 are enforced.
@@ -882,7 +903,7 @@ ARG ::= NAME | EXPRESSION
 
 @noindent
 This pragma is used to annotate programs.  @var{identifier} identifies
-the type of annotation.  GNAT verifies this is an identifier, but does
+the type of annotation.  GNAT verifies that it is an identifier, but does
 not otherwise analyze it.  The @var{arg} argument
 can be either a string literal or an
 expression.  String literals are assumed to be of type
@@ -942,22 +963,21 @@ type of the expression is either @code{Standard.Boolean}, or any type derived
 from this standard type.
 
 If assertions are disabled (switch @code{-gnata} not used), then there
-is no effect (and in particular, any side effects from the expression
-are suppressed).  More precisely it is not quite true that the pragma
-has no effect, since the expression is analyzed, and may cause types
-to be frozen if they are mentioned here for the first time.
+is no run-time effect (and in particular, any side effects from the
+expression will not occur at run time).  (The expression is still
+analyzed at compile time, and may cause types to be frozen if they are
+mentioned here for the first time).
 
 If assertions are enabled, then the given expression is tested, and if
 it is @code{False} then @code{System.Assertions.Raise_Assert_Failure} is called
 which results in the raising of @code{Assert_Failure} with the given message.
 
-If the boolean expression has side effects, these side effects will turn
-on and off with the setting of the assertions mode, resulting in
-assertions that have an effect on the program.  You should generally
-avoid side effects in the expression arguments of this pragma.  However,
-the expressions are analyzed for semantic correctness whether or not
-assertions are enabled, so turning assertions on and off cannot affect
-the legality of a program.
+You should generally avoid side effects in the expression arguments of
+this pragma, because these side effects will turn on and off with the
+setting of the assertions mode, resulting in assertions that have an
+effect on the program.  However, the expressions are analyzed for
+semantic correctness whether or not assertions are enabled, so turning
+assertions on and off cannot affect the legality of a program.
 
 @node Pragma Ast_Entry
 @unnumberedsec Pragma Ast_Entry
@@ -1001,7 +1021,8 @@ copy if all of the following conditions are met:
 
 @itemize @bullet
 @item
-The size of the record type does not exceed@*@var{static_integer_expression}.
+The size of the record type does not exceed the value specified for
+@code{Max_Size}.
 @item
 The record type has @code{Convention C}.
 @item
@@ -1031,7 +1052,7 @@ pragma Check_Name (check_name_IDENTIFIER);
 @end smallexample
 
 @noindent
-This is a configuration pragma which defines a new implementation
+This is a configuration pragma that defines a new implementation
 defined check name (unless IDENTIFIER matches one of the predefined
 check names, in which case the pragma has no effect). Check names
 are global to a partition, so if two more more configuration pragmas
@@ -1048,7 +1069,6 @@ the current unit, or if it appears at the start of any unit that
 is part of the dependency set of the current unit (e.g. units that
 are mentioned in @code{with} clauses.
 
-Normally the default mechanism for passing C convention records to C
 @node Pragma Comment
 @unnumberedsec Pragma Comment
 @findex Comment
@@ -1076,7 +1096,7 @@ Syntax:
 
 @smallexample @c ada
 pragma Common_Object (
-     [Internal =>] local_NAME,
+     [Internal =>] LOCAL_NAME
   [, [External =>] EXTERNAL_SYMBOL]
   [, [Size     =>] EXTERNAL_SYMBOL] );
 
@@ -1089,10 +1109,10 @@ EXTERNAL_SYMBOL ::=
 This pragma enables the shared use of variables stored in overlaid
 linker areas corresponding to the use of @code{COMMON}
 in Fortran.  The single
-object @var{local_NAME} is assigned to the area designated by
+object @var{LOCAL_NAME} is assigned to the area designated by
 the @var{External} argument.
 You may define a record to correspond to a series
-of fields.  The @var{size} argument
+of fields.  The @var{Size} argument
 is syntax checked in GNAT, but otherwise ignored.
 
 @code{Common_Object} is not supported on all platforms.  If no
@@ -1139,19 +1159,8 @@ pragma Compile_Time_Warning
 @end smallexample
 
 @noindent
-This pragma can be used to generate additional compile time warnings. It
-is particularly useful in generics, where warnings can be issued for
-specific problematic instantiations. The first parameter is a boolean
-expression. The pragma is effective only if the value of this expression
-is known at compile time, and has the value True. The set of expressions
-whose values are known at compile time includes all static boolean
-expressions, and also other values which the compiler can determine
-at compile time (e.g. the size of a record type set by an explicit
-size representation clause, or the value of a variable which was
-initialized to a constant and is known not to have been modified).
-If these conditions are met, a warning message is generated using
-the value given as the second argument. This string value may contain
-embedded ASCII.LF characters to break the message into multiple lines.
+Same as pragma Compile_Time_Error, except a warning is issued instead
+of an error message.
 
 @node Pragma Complete_Representation
 @unnumberedsec Pragma Complete_Representation
@@ -1180,7 +1189,7 @@ Syntax:
 
 @smallexample @c ada
 pragma Complex_Representation
-        ([Entity =>] local_NAME);
+        ([Entity =>] LOCAL_NAME);
 @end smallexample
 
 @noindent
@@ -1204,7 +1213,7 @@ Syntax:
 @smallexample @c ada
 pragma Component_Alignment (
      [Form =>] ALIGNMENT_CHOICE
-  [, [Name =>] type_local_NAME]);
+  [, [Name =>] type_LOCAL_NAME]);
 
 ALIGNMENT_CHOICE ::=
   Component_Size
@@ -1251,7 +1260,7 @@ alignment).
 @end table
 
 @noindent
-If the @code{Name} parameter is present, @var{type_local_NAME} must
+If the @code{Name} parameter is present, @var{type_LOCAL_NAME} must
 refer to a local record or array type, and the specified alignment
 choice applies to the specified type.  The use of
 @code{Component_Alignment} together with a pragma @code{Pack} causes the
@@ -1315,7 +1324,7 @@ would be used system-wide.
 Syntax:
 
 @smallexample @c ada
-pragma CPP_Class ([Entity =>] local_NAME);
+pragma CPP_Class ([Entity =>] LOCAL_NAME);
 @end smallexample
 
 @noindent
@@ -1347,7 +1356,7 @@ using pragma @code{Import} with @code{Convention} = @code{CPP}.
 Syntax:
 
 @smallexample @c ada
-pragma CPP_Constructor ([Entity =>] local_NAME
+pragma CPP_Constructor ([Entity =>] LOCAL_NAME
   [, [External_Name =>] static_string_EXPRESSION ]
   [, [Link_Name     =>] static_string_EXPRESSION ]);
 @end smallexample
@@ -1653,8 +1662,8 @@ Syntax:
 
 @smallexample @c ada
 pragma Export_Exception (
-     [Internal =>] local_NAME,
-  [, [External =>] EXTERNAL_SYMBOL,]
+     [Internal =>] LOCAL_NAME
+  [, [External =>] EXTERNAL_SYMBOL]
   [, [Form     =>] Ada | VMS]
   [, [Code     =>] static_integer_EXPRESSION]);
 
@@ -1682,7 +1691,7 @@ Syntax:
 
 @smallexample @c ada
 pragma Export_Function (
-     [Internal         =>] local_NAME,
+     [Internal         =>] LOCAL_NAME
   [, [External         =>] EXTERNAL_SYMBOL]
   [, [Parameter_Types  =>] PARAMETER_TYPES]
   [, [Result_Type      =>] result_SUBTYPE_MARK]
@@ -1760,7 +1769,7 @@ Syntax:
 
 @smallexample @c ada
 pragma Export_Object
-      [Internal =>] local_NAME,
+      [Internal =>] LOCAL_NAME
    [, [External =>] EXTERNAL_SYMBOL]
    [, [Size     =>] EXTERNAL_SYMBOL]
 
@@ -1785,7 +1794,7 @@ Syntax:
 
 @smallexample @c ada
 pragma Export_Procedure (
-     [Internal        =>] local_NAME
+     [Internal        =>] LOCAL_NAME
   [, [External        =>] EXTERNAL_SYMBOL]
   [, [Parameter_Types =>] PARAMETER_TYPES]
   [, [Mechanism       =>] MECHANISM]);
@@ -1867,7 +1876,7 @@ Syntax:
 
 @smallexample @c ada
 pragma Export_Valued_Procedure (
-     [Internal        =>] local_NAME
+     [Internal        =>] LOCAL_NAME
   [, [External        =>] EXTERNAL_SYMBOL]
   [, [Parameter_Types =>] PARAMETER_TYPES]
   [, [Mechanism       =>] MECHANISM]);
@@ -1902,7 +1911,7 @@ CLASS_NAME ::= ubs | ubsb | uba | s | sb | a
 
 @noindent
 This pragma is identical to @code{Export_Procedure} except that the
-first parameter of @var{local_NAME}, which must be present, must be of
+first parameter of @var{LOCAL_NAME}, which must be present, must be of
 mode @code{OUT}, and externally the subprogram is treated as a function
 with this parameter as the result of the function.  GNAT provides for
 this capability to allow the use of @code{OUT} and @code{IN OUT}
@@ -1981,7 +1990,7 @@ Syntax:
 @smallexample @c ada
 pragma External (
   [   Convention    =>] convention_IDENTIFIER,
-  [   Entity        =>] local_NAME
+  [   Entity        =>] LOCAL_NAME
   [, [External_Name =>] static_string_EXPRESSION ]
   [, [Link_Name     =>] static_string_EXPRESSION ]);
 @end smallexample
@@ -2076,6 +2085,52 @@ pragma External_Name_Casing (Uppercase, Uppercase);
 @noindent
 to enforce the upper casing of all external symbols.
 
+@node Pragma Fast_Math
+@unnumberedsec Pragma Fast_Math
+@findex Fast_Math
+@noindent
+Syntax:
+
+@smallexample @c ada
+pragma Fast_Math;
+@end smallexample
+
+@noindent
+This is a configuration pragma which activates a mode in which speed is
+considered more important for floating-point operations than absolutely
+accurate adherence to the requirements of the standard. Currently the
+following operations are affected:
+
+@table @asis
+@item Complex Multiplication
+The normal simple formula for complex multiplication can result in intermediate
+overflows for numbers near the end of the range. The Ada standard requires that
+this situation be detected and corrected by scaling, but in Fast_Math mode such
+cases will simply result in overflow. Note that to take advantage of this you
+must instantiate your own version of @code{Ada.Numerics.Generic_Complex_Types}
+under control of the pragma, rather than use the preinstantiated versions.
+@end table
+
+@node Pragma Favor_Top_Level
+@unnumberedsec Pragma Favor_Top_Level
+@findex Favor_Top_Level
+@noindent
+Syntax:
+
+@smallexample @c ada
+pragma Favor_Top_Level (type_NAME);
+@end smallexample
+
+@noindent
+The named type must be an access-to-subprogram type. This pragma is an
+efficiency hint to the compiler, regarding the use of 'Access or
+'Unrestricted_Access on nested (non-library-level) subprograms. The
+pragma means that nested subprograms are not used with this type, or
+are rare, so that the generated code should be efficient in the
+top-level case. When this pragma is used, dynamically generated
+trampolines may be used on some targets for nested subprograms.
+See also the No_Implicit_Dynamic_Code restriction.
+
 @node Pragma Finalize_Storage_Only
 @unnumberedsec Pragma Finalize_Storage_Only
 @findex Finalize_Storage_Only
@@ -2083,7 +2138,7 @@ to enforce the upper casing of all external symbols.
 Syntax:
 
 @smallexample @c ada
-pragma Finalize_Storage_Only (first_subtype_local_NAME);
+pragma Finalize_Storage_Only (first_subtype_LOCAL_NAME);
 @end smallexample
 
 @noindent
@@ -2159,6 +2214,42 @@ maximum allowed length is 31 characters, so if it is important to
 maintain compatibility with this compiler, you should obey this length
 limit.
 
+@node Pragma Implemented_By_Entry
+@unnumberedsec Pragma Implemented_By_Entry
+@findex Implemented_By_Entry
+@noindent
+Syntax:
+
+@smallexample @c ada
+pragma Implemented_By_Entry (LOCAL_NAME);
+@end smallexample
+
+@noindent
+This is a representation pragma which applies to protected, synchronized and
+task interface primitives. If the pragma is applied to primitive operation Op
+of interface Iface, it is illegal to override Op in a type that implements
+Iface, with anything other than an entry.
+
+@smallexample @c ada
+type Iface is protected interface;
+procedure Do_Something (Object : in out Iface) is abstract;
+pragma Implemented_By_Entry (Do_Something);
+
+protected type P is new Iface with
+   procedure Do_Something;  --  Illegal
+end P;
+
+task type T is new Iface with
+   entry Do_Something;      --  Legal
+end T;
+@end smallexample
+
+@noindent
+NOTE: The pragma is still in its design stage by the Ada Rapporteur Group. It
+is intended to be used in conjunction with dispatching requeue statements as
+described in AI05-0030. Should the ARG decide on an official name and syntax,
+this pragma will become language-defined rather than GNAT-specific.
+
 @node Pragma Implicit_Packing
 @unnumberedsec Pragma Implicit_Packing
 @findex Implicit_Packing
@@ -2203,8 +2294,8 @@ Syntax:
 
 @smallexample @c ada
 pragma Import_Exception (
-     [Internal =>] local_NAME,
-  [, [External =>] EXTERNAL_SYMBOL,]
+     [Internal =>] LOCAL_NAME
+  [, [External =>] EXTERNAL_SYMBOL]
   [, [Form     =>] Ada | VMS]
   [, [Code     =>] static_integer_EXPRESSION]);
 
@@ -2230,7 +2321,7 @@ Syntax:
 
 @smallexample @c ada
 pragma Import_Function (
-     [Internal                 =>] local_NAME,
+     [Internal                 =>] LOCAL_NAME,
   [, [External                 =>] EXTERNAL_SYMBOL]
   [, [Parameter_Types          =>] PARAMETER_TYPES]
   [, [Result_Type              =>] SUBTYPE_MARK]
@@ -2312,8 +2403,8 @@ Syntax:
 
 @smallexample @c ada
 pragma Import_Object
-     [Internal =>] local_NAME,
-  [, [External =>] EXTERNAL_SYMBOL],
+     [Internal =>] LOCAL_NAME
+  [, [External =>] EXTERNAL_SYMBOL]
   [, [Size     =>] EXTERNAL_SYMBOL]);
 
 EXTERNAL_SYMBOL ::=
@@ -2338,7 +2429,7 @@ Syntax:
 
 @smallexample @c ada
 pragma Import_Procedure (
-     [Internal                 =>] local_NAME,
+     [Internal                 =>] LOCAL_NAME
   [, [External                 =>] EXTERNAL_SYMBOL]
   [, [Parameter_Types          =>] PARAMETER_TYPES]
   [, [Mechanism                =>] MECHANISM]
@@ -2384,7 +2475,7 @@ Syntax:
 
 @smallexample @c ada
 pragma Import_Valued_Procedure (
-     [Internal                 =>] local_NAME,
+     [Internal                 =>] LOCAL_NAME
   [, [External                 =>] EXTERNAL_SYMBOL]
   [, [Parameter_Types          =>] PARAMETER_TYPES]
   [, [Mechanism                =>] MECHANISM]
@@ -2419,7 +2510,7 @@ CLASS_NAME ::= ubs | ubsb | uba | s | sb | a | nca
 
 @noindent
 This pragma is identical to @code{Import_Procedure} except that the
-first parameter of @var{local_NAME}, which must be present, must be of
+first parameter of @var{LOCAL_NAME}, which must be present, must be of
 mode @code{OUT}, and externally the subprogram is treated as a function
 with this parameter as the result of the function.  The purpose of this
 capability is to allow the use of @code{OUT} and @code{IN OUT}
@@ -2535,8 +2626,8 @@ Syntax:
 @smallexample @c ada
 pragma Interface (
      [Convention    =>] convention_identifier,
-     [Entity =>] local_NAME
-  [, [External_Name =>] static_string_expression],
+     [Entity        =>] local_NAME
+  [, [External_Name =>] static_string_expression]
   [, [Link_Name     =>] static_string_expression]);
 @end smallexample
 
@@ -2556,7 +2647,7 @@ Syntax:
 
 @smallexample @c ada
 pragma Interface_Name (
-     [Entity        =>] local_NAME
+     [Entity        =>] LOCAL_NAME
   [, [External_Name =>] static_string_EXPRESSION]
   [, [Link_Name     =>] static_string_EXPRESSION]);
 @end smallexample
@@ -2574,7 +2665,7 @@ least one of @var{External_Name} or @var{Link_Name}.
 Syntax:
 
 @smallexample @c ada
-pragma Interrupt_Handler (procedure_local_NAME);
+pragma Interrupt_Handler (procedure_LOCAL_NAME);
 @end smallexample
 
 @noindent
@@ -2670,11 +2761,11 @@ and in the case of the signal used to implement the @code{abort} statement.
 Syntax:
 
 @smallexample @c ada
-pragma Keep_Names ([On =>] enumeration_first_subtype_local_NAME);
+pragma Keep_Names ([On =>] enumeration_first_subtype_LOCAL_NAME);
 @end smallexample
 
 @noindent
-The @var{local_NAME} argument
+The @var{LOCAL_NAME} argument
 must refer to an enumeration first subtype
 in the current declarative part. The effect is to retain the enumeration
 literal names for use by @code{Image} and @code{Value} even if a global
@@ -2812,17 +2903,17 @@ Syntax:
 
 @smallexample @c ada
 pragma Linker_Alias (
-  [Entity =>] local_NAME
+  [Entity =>] LOCAL_NAME,
   [Target =>] static_string_EXPRESSION);
 @end smallexample
 
 @noindent
-@var{local_NAME} must refer to an object that is declared at the library
+@var{LOCAL_NAME} must refer to an object that is declared at the library
 level. This pragma establishes the given entity as a linker alias for the
 given target. It is equivalent to @code{__attribute__((alias))} in GNU C
-and causes @var{local_NAME} to be emitted as an alias for the symbol
+and causes @var{LOCAL_NAME} to be emitted as an alias for the symbol
 @var{static_string_EXPRESSION} in the object file, that is to say no space
-is reserved for @var{local_NAME} by the assembler and it will be resolved
+is reserved for @var{LOCAL_NAME} by the assembler and it will be resolved
 to the same address as @var{static_string_EXPRESSION} by the linker.
 
 The actual linker name for the target must be used (e.g. the fully
@@ -2831,7 +2922,7 @@ or it must be declared using the C convention with @code{pragma Import}
 or @code{pragma Export}.
 
 Not all target machines support this pragma. On some of them it is accepted
-only if @code{pragma Weak_External} has been applied to @var{local_NAME}.
+only if @code{pragma Weak_External} has been applied to @var{LOCAL_NAME}.
 
 @smallexample @c ada
 --  Example of the use of pragma Linker_Alias
@@ -2856,7 +2947,7 @@ pragma Linker_Constructor (procedure_LOCAL_NAME);
 @end smallexample
 
 @noindent
-@var{procedure_local_NAME} must refer to a parameterless procedure that
+@var{procedure_LOCAL_NAME} must refer to a parameterless procedure that
 is declared at the library level. A procedure to which this pragma is
 applied will be treated as an initialization routine by the linker.
 It is equivalent to @code{__attribute__((constructor))} in GNU C and
@@ -2886,7 +2977,7 @@ pragma Linker_Destructor (procedure_LOCAL_NAME);
 @end smallexample
 
 @noindent
-@var{procedure_local_NAME} must refer to a parameterless procedure that
+@var{procedure_LOCAL_NAME} must refer to a parameterless procedure that
 is declared at the library level. A procedure to which this pragma is
 applied will be treated as a finalization routine by the linker.
 It is equivalent to @code{__attribute__((destructor))} in GNU C and
@@ -2906,15 +2997,15 @@ Syntax:
 
 @smallexample @c ada
 pragma Linker_Section (
-  [Entity  =>] local_NAME
+  [Entity  =>] LOCAL_NAME,
   [Section =>] static_string_EXPRESSION);
 @end smallexample
 
 @noindent
-@var{local_NAME} must refer to an object that is declared at the library
+@var{LOCAL_NAME} must refer to an object that is declared at the library
 level. This pragma specifies the name of the linker section for the given
 entity. It is equivalent to @code{__attribute__((section))} in GNU C and
-causes @var{local_NAME} to be placed in the @var{static_string_EXPRESSION}
+causes @var{LOCAL_NAME} to be placed in the @var{static_string_EXPRESSION}
 section of the executable (assuming the linker doesn't rename the section).
 
 The compiler normally places library-level objects in standard sections
@@ -2979,19 +3070,24 @@ Syntax:
 
 @smallexample @c ada
 pragma Machine_Attribute (
-  [Attribute_Name =>] string_EXPRESSION,
-  [Entity         =>] local_NAME);
+     [Entity         =>] LOCAL_NAME,
+     [Attribute_Name =>] static_string_EXPRESSION
+  [, [Info           =>] static_string_EXPRESSION] );
 @end smallexample
 
 @noindent
 Machine-dependent attributes can be specified for types and/or
 declarations.  This pragma is semantically equivalent to
-@code{__attribute__((@var{string_expression}))} in GNU C,
-where @code{@var{string_expression}} is
-recognized by the target macro @code{TARGET_ATTRIBUTE_TABLE} which is
-defined for each machine.  See the GCC manual for further information.
-It is not possible to specify attributes defined by other languages,
-only attributes defined by the machine the code is intended to run on.
+@code{__attribute__((@var{attribute_name}))} (if @var{info} is not
+specified) or @code{__attribute__((@var{attribute_name}(@var{info})))}
+in GNU C, where @code{@var{attribute_name}} is recognized by the
+target macro @code{TARGET_ATTRIBUTE_TABLE} which is defined for each
+machine.  The optional parameter @var{info} is transformed into an
+identifier, which may make this pragma unusable for some attributes
+(parameter of some attributes must be a number or a string). See the
+GCC manual for further information.  It is not possible to specify
+attributes defined by other languages, only attributes defined by the
+machine the code is intended to run on.
 
 @node Pragma Main
 @unnumberedsec Pragma Main
@@ -3065,11 +3161,11 @@ earlier versions of the package body.
 Syntax:
 
 @smallexample @c ada
-pragma No_Return (procedure_local_NAME @{, procedure_local_NAME@});
+pragma No_Return (procedure_LOCAL_NAME @{, procedure_LOCAL_NAME@});
 @end smallexample
 
 @noindent
-Each @var{procedure_local_NAME} argument must refer to one or more procedure
+Each @var{procedure_LOCAL_NAME} argument must refer to one or more procedure
 declarations in the current declarative part.  A procedure to which this
 pragma is applied may not contain any explicit @code{return} statements.
 In addition, if the procedure contains any implicit returns from falling
@@ -3299,7 +3395,7 @@ optimized.  GNAT does not attempt to optimize any tasks in this manner
 Syntax:
 
 @smallexample @c ada
-pragma Persistent_BSS [(local_NAME)]
+pragma Persistent_BSS [(LOCAL_NAME)]
 @end smallexample
 
 @noindent
@@ -3551,7 +3647,7 @@ Syntax:
 
 @smallexample @c ada
 pragma Psect_Object (
-     [Internal =>] local_NAME,
+     [Internal =>] LOCAL_NAME,
   [, [External =>] EXTERNAL_SYMBOL]
   [, [Size     =>] EXTERNAL_SYMBOL]);
 
@@ -3570,7 +3666,7 @@ This pragma is identical in effect to pragma @code{Common_Object}.
 Syntax:
 
 @smallexample @c ada
-pragma Pure_Function ([Entity =>] function_local_NAME);
+pragma Pure_Function ([Entity =>] function_LOCAL_NAME);
 @end smallexample
 
 @noindent
@@ -3637,6 +3733,14 @@ the compiler checks for violations of the restriction, but
 generates a warning message rather than an error message
 if the restriction is violated.
 
+@node Pragma Shared
+@unnumberedsec Pragma Shared
+@findex Shared
+
+@noindent
+This pragma is provided for compatibility with Ada 83. The syntax and
+semantics are identical to pragma Atomic.
+
 @node Pragma Source_File_Name
 @unnumberedsec Pragma Source_File_Name
 @findex Source_File_Name
@@ -3749,7 +3853,7 @@ Syntax:
 
 @smallexample @c ada
 pragma Stream_Convert (
-  [Entity =>] type_local_NAME,
+  [Entity =>] type_LOCAL_NAME,
   [Read   =>] function_NAME,
   [Write  =>] function_NAME);
 @end smallexample
@@ -3823,7 +3927,7 @@ Syntax:
 
 @smallexample @c ada
 pragma Style_Checks (string_LITERAL | ALL_CHECKS |
-                     On | Off [, local_NAME]);
+                     On | Off [, LOCAL_NAME]);
 @end smallexample
 
 @noindent
@@ -4062,7 +4166,7 @@ Syntax:
 
 @smallexample @c ada
 pragma Task_Storage (
-  [Task_Type =>] local_NAME,
+  [Task_Type =>] LOCAL_NAME,
   [Top_Guard =>] static_integer_EXPRESSION);
 @end smallexample
 
@@ -4126,7 +4230,7 @@ following the normal rules for procedure calls in Ada.
 Syntax:
 
 @smallexample @c ada
-pragma Unchecked_Union (first_subtype_local_NAME);
+pragma Unchecked_Union (first_subtype_LOCAL_NAME);
 @end smallexample
 
 @noindent
@@ -4208,7 +4312,7 @@ compilations of units where universal addressing of the data is desired.
 Syntax:
 
 @smallexample @c ada
-pragma Unreferenced (local_NAME @{, local_NAME@});
+pragma Unreferenced (LOCAL_NAME @{, LOCAL_NAME@});
 pragma Unreferenced (library_unit_NAME @{, library_unit_NAME@});
 @end smallexample
 
@@ -4227,7 +4331,7 @@ and that this is deliberate. It can also be useful in the case of
 objects declared only for their initialization or finalization side
 effects.
 
-If @code{local_NAME} identifies more than one matching homonym in the
+If @code{LOCAL_NAME} identifies more than one matching homonym in the
 current scope, then the entity most recently declared is the one to which
 the pragma applies. Note that in the case of accept formals, the pragma
 Unreferenced may appear immediately after the keyword @code{do} which
@@ -4248,7 +4352,7 @@ The second form of pragma @code{Unreferenced} is used within a context
 clause. In this case the arguments must be unit names of units previously
 mentioned in @code{with} clauses (similar to the usage of pragma
 @code{Elaborate_All}. The effect is to suppress warnings about unreferenced
-units.
+units and unreferenced entities within these units.
 
 @node Pragma Unreferenced_Objects
 @unnumberedsec Pragma Unreferenced_Objects
@@ -4417,7 +4521,7 @@ A := C;                       -- C will be validity checked
 Syntax:
 
 @smallexample @c ada
-pragma Volatile (local_NAME);
+pragma Volatile (LOCAL_NAME);
 @end smallexample
 
 @noindent
@@ -4436,7 +4540,7 @@ Syntax:
 
 @smallexample @c ada
 pragma Warnings (On | Off);
-pragma Warnings (On | Off, local_NAME);
+pragma Warnings (On | Off, LOCAL_NAME);
 pragma Warnings (static_string_EXPRESSION);
 pragma Warnings (On | Off, static_string_EXPRESSION);
 @end smallexample
@@ -4451,7 +4555,7 @@ setting of the command line switches.
 
 The form with a single argument may be used as a configuration pragma.
 
-If the @var{local_NAME} parameter is present, warnings are suppressed for
+If the @var{LOCAL_NAME} parameter is present, warnings are suppressed for
 the specified entity.  This suppression is effective from the point where
 it occurs till the end of the extended scope of the variable (similar to
 the scope of @code{Suppress}).
@@ -4561,14 +4665,14 @@ and at least one matching warning must be suppressed.
 Syntax:
 
 @smallexample @c ada
-pragma Weak_External ([Entity =>] local_NAME);
+pragma Weak_External ([Entity =>] LOCAL_NAME);
 @end smallexample
 
 @noindent
-@var{local_NAME} must refer to an object that is declared at the library
+@var{LOCAL_NAME} must refer to an object that is declared at the library
 level. This pragma specifies that the given entity should be marked as a
 weak symbol for the linker. It is equivalent to @code{__attribute__((weak))}
-in GNU C and causes @var{local_NAME} to be emitted as a weak symbol instead
+in GNU C and causes @var{LOCAL_NAME} to be emitted as a weak symbol instead
 of a regular symbol, that is to say a symbol that does not have to be
 resolved by the linker if used in conjunction with a pragma Import.
 
@@ -4682,6 +4786,7 @@ consideration, you should minimize the use of these attributes.
 * Null_Parameter::
 * Object_Size::
 * Passed_By_Reference::
+* Pool_Address::
 * Range_Length::
 * Safe_Emax::
 * Safe_Large::
@@ -5253,6 +5358,25 @@ normally passed by reference and @code{False} if the type is normally
 passed by copy in calls.  For scalar types, the result is always @code{False}
 and is static.  For non-scalar types, the result is non-static.
 
+@node Pool_Address
+@unnumberedsec Pool_Address
+@cindex Parameters, when passed by reference
+@findex Pool_Address
+@noindent
+@code{@var{X}'Pool_Address} for any object @var{X} returns the address
+of X within its storage pool. This is the same as
+@code{@var{X}'Address}, except that for an unconstrained array whose
+bounds are allocated just before the first component,
+@code{@var{X}'Pool_Address} returns the address of those bounds,
+whereas @code{@var{X}'Address} returns the address of the first
+component.
+
+Here, we are interpreting ``storage pool'' broadly to mean ``wherever
+the object is allocated'', which could be a user-defined storage pool,
+the global heap, on the stack, or in a static memory area. For an
+object created by @code{new}, @code{@var{Ptr.all}'Pool_Address} is
+what is passed to @code{Allocate} and returned from @code{Deallocate}.
+
 @node Range_Length
 @unnumberedsec Range_Length
 @findex Range_Length
@@ -9845,8 +9969,8 @@ will be flagged as illegal by GNAT@.
 Since the misconception that Bit_Order automatically deals with all
 endian-related incompatibilities is a common one, the specification of
 a component field that is an integral number of bytes will always
-generate a warning.  This warning may be suppressed using
-@code{pragma Suppress} if desired.  The following section contains additional
+generate a warning.  This warning may be suppressed using @code{pragma
+Warnings (Off)} if desired.  The following section contains additional
 details regarding the issue of byte ordering.
 
 @node Effect of Bit_Order on Byte Ordering
@@ -12641,6 +12765,7 @@ of GNAT, and will generate a warning message.
 * GNAT.Bubble_Sort (g-bubsor.ads)::
 * GNAT.Bubble_Sort_A (g-busora.ads)::
 * GNAT.Bubble_Sort_G (g-busorg.ads)::
+* GNAT.Byte_Order_Mark (g-byorma.ads)::
 * GNAT.Byte_Swapping (g-bytswa.ads)::
 * GNAT.Calendar (g-calend.ads)::
 * GNAT.Calendar.Time_IO (g-catiio.ads)::
@@ -12655,9 +12780,14 @@ of GNAT, and will generate a warning message.
 * GNAT.Current_Exception (g-curexc.ads)::
 * GNAT.Debug_Pools (g-debpoo.ads)::
 * GNAT.Debug_Utilities (g-debuti.ads)::
+* GNAT.Decode_String (g-decstr.ads)::
+* GNAT.Decode_UTF8_String (g-deutst.ads)::
 * GNAT.Directory_Operations (g-dirope.ads)::
+* GNAT.Directory_Operations.Iteration (g-diopit.ads)::
 * GNAT.Dynamic_HTables (g-dynhta.ads)::
 * GNAT.Dynamic_Tables (g-dyntab.ads)::
+* GNAT.Encode_String (g-encstr.ads)::
+* GNAT.Encode_UTF8_String (g-enutst.ads)::
 * GNAT.Exception_Actions (g-excact.ads)::
 * GNAT.Exception_Traces (g-exctra.ads)::
 * GNAT.Exceptions (g-except.ads)::
@@ -12675,6 +12805,7 @@ of GNAT, and will generate a warning message.
 * GNAT.Most_Recent_Exception (g-moreex.ads)::
 * GNAT.OS_Lib (g-os_lib.ads)::
 * GNAT.Perfect_Hash_Generators (g-pehage.ads)::
+* GNAT.Random_Numbers (g-rannum.ads)::
 * GNAT.Regexp (g-regexp.ads)::
 * GNAT.Registry (g-regist.ads)::
 * GNAT.Regpat (g-regpat.ads)::
@@ -12684,7 +12815,8 @@ of GNAT, and will generate a warning message.
 * GNAT.Signals (g-signal.ads)::
 * GNAT.Sockets (g-socket.ads)::
 * GNAT.Source_Info (g-souinf.ads)::
-* GNAT.Spell_Checker (g-speche.ads)::
+* GNAT.Spelling_Checker (g-speche.ads)::
+* GNAT.Spelling_Checker_Generic (g-spchge.ads)::
 * GNAT.Spitbol.Patterns (g-spipat.ads)::
 * GNAT.Spitbol (g-spitbo.ads)::
 * GNAT.Spitbol.Table_Boolean (g-sptabo.ads)::
@@ -12692,13 +12824,16 @@ of GNAT, and will generate a warning message.
 * GNAT.Spitbol.Table_VString (g-sptavs.ads)::
 * GNAT.Strings (g-string.ads)::
 * GNAT.String_Split (g-strspl.ads)::
-* GNAT.UTF_32 (g-utf_32.ads)::
 * GNAT.Table (g-table.ads)::
 * GNAT.Task_Lock (g-tasloc.ads)::
 * GNAT.Threads (g-thread.ads)::
 * GNAT.Traceback (g-traceb.ads)::
 * GNAT.Traceback.Symbolic (g-trasym.ads)::
+* GNAT.UTF_32 (g-utf_32.ads)::
+* GNAT.UTF_32_Spelling_Checker (g-u3spch.ads)::
+* GNAT.Wide_Spelling_Checker (g-wispch.ads)::
 * GNAT.Wide_String_Split (g-wistsp.ads)::
+* GNAT.Wide_Wide_Spelling_Checker (g-zspche.ads)::
 * GNAT.Wide_Wide_String_Split (g-zistsp.ads)::
 * Interfaces.C.Extensions (i-cexten.ads)::
 * Interfaces.C.Streams (i-cstrea.ads)::
@@ -13059,6 +13194,18 @@ are provided as generic parameters, this improves efficiency, especially
 if the procedures can be inlined, at the expense of duplicating code for
 multiple instantiations.
 
+@node GNAT.Byte_Order_Mark (g-byorma.ads)
+@section @code{GNAT.Byte_Order_Mark} (@file{g-byorma.ads})
+@cindex @code{GNAT.Byte_Order_Mark} (@file{g-byorma.ads})
+@cindex UTF-8 representation
+@cindex Wide characte representations
+
+@noindent
+Provides a routine which given a string, reads the start of the string to
+see whether it is one of the standard byte order marks (BOM's) which signal
+the encoding of the string. The routine includes detection of special XML
+sequences for various UCS input formats.
+
 @node GNAT.Byte_Swapping (g-bytswa.ads)
 @section @code{GNAT.Byte_Swapping} (@file{g-bytswa.ads})
 @cindex @code{GNAT.Byte_Swapping} (@file{g-bytswa.ads})
@@ -13208,6 +13355,36 @@ Provides a few useful utilities for debugging purposes, including conversion
 to and from string images of address values. Supports both C and Ada formats
 for hexadecimal literals.
 
+@node GNAT.Decode_String (g-decstr.ads)
+@section @code{GNAT.Decode_String} (@file{g-decstr.ads})
+@cindex @code{GNAT.Decode_String} (@file{g-decstr.ads})
+@cindex Decoding strings
+@cindex String decoding
+@cindex Wide chararacter encoding
+@cindex UTF-8
+@cindex Unicode
+
+@noindent
+A generic package providing routines for decoding wide character and wide wide
+character strings encoded as sequences of 8-bit characters using a specified
+encoding method. Includes validation routines, and also routines for stepping
+to next or previous encoded character in an encoded string.
+Useful in conjunction with Unicode character coding. Note there is a
+preinstiation for UTF-8. See next entry.
+
+@node GNAT.Decode_UTF8_String (g-deutst.ads)
+@section @code{GNAT.Decode_UTF8_String} (@file{g-deutst.ads})
+@cindex @code{GNAT.Decode_UTF8_String} (@file{g-deutst.ads})
+@cindex Decoding strings
+@cindex Decoding UTF-8 strings
+@cindex UTF-8 string decoding
+@cindex Wide chararacter decoding
+@cindex UTF-8
+@cindex Unicode
+
+@noindent
+A preinstantion of GNAT.Decode_Strings for UTF-8 encoding.
+
 @node GNAT.Directory_Operations (g-dirope.ads)
 @section @code{GNAT.Directory_Operations} (@file{g-dirope.ads})
 @cindex @code{GNAT.Directory_Operations} (@file{g-dirope.ads})
@@ -13218,6 +13395,15 @@ Provides a set of routines for manipulating directories, including changing
 the current directory, making new directories, and scanning the files in a
 directory.
 
+@node GNAT.Directory_Operations.Iteration (g-diopit.ads)
+@section @code{GNAT.Directory_Operations.Iteration} (@file{g-diopit.ads})
+@cindex @code{GNAT.Directory_Operations.Iteration} (@file{g-diopit.ads})
+@cindex Directory operations iteration
+
+@noindent
+A child unit of GNAT.Directory_Operations providing additional operations
+for iterating through directories.
+
 @node GNAT.Dynamic_HTables (g-dynhta.ads)
 @section @code{GNAT.Dynamic_HTables} (@file{g-dynhta.ads})
 @cindex @code{GNAT.Dynamic_HTables} (@file{g-dynhta.ads})
@@ -13250,6 +13436,34 @@ except that this package declares a type that can be used to define
 dynamic instances of the table, while an instantiation of
 @code{GNAT.Table} creates a single instance of the table type.
 
+@node GNAT.Encode_String (g-encstr.ads)
+@section @code{GNAT.Encode_String} (@file{g-encstr.ads})
+@cindex @code{GNAT.Encode_String} (@file{g-encstr.ads})
+@cindex Encoding strings
+@cindex String encoding
+@cindex Wide chararacter encoding
+@cindex UTF-8
+@cindex Unicode
+
+@noindent
+A generic package providing routines for encoding wide character and wide
+wide character strings as sequences of 8-bit characters using a specified
+encoding method. Useful in conjunction with Unicode character coding.
+Note there is a preinstiation for UTF-8. See next entry.
+
+@node GNAT.Encode_UTF8_String (g-enutst.ads)
+@section @code{GNAT.Encode_UTF8_String} (@file{g-enutst.ads})
+@cindex @code{GNAT.Encode_UTF8_String} (@file{g-enutst.ads})
+@cindex Encoding strings
+@cindex Encoding UTF-8 strings
+@cindex UTF-8 string encoding
+@cindex Wide chararacter encoding
+@cindex UTF-8
+@cindex Unicode
+
+@noindent
+A preinstantion of GNAT.Encode_Strings for UTF-8 encoding.
+
 @node GNAT.Exception_Actions (g-excact.ads)
 @section @code{GNAT.Exception_Actions} (@file{g-excact.ads})
 @cindex @code{GNAT.Exception_Actions} (@file{g-excact.ads})
@@ -13441,6 +13655,15 @@ preserving. If w2 is inserted after w1 in the generator, their
 hashcode are in the same order. These hashing functions are very
 convenient for use with realtime applications.
 
+@node GNAT.Random_Numbers (g-rannum.ads)
+@section @code{GNAT.Random_Numbers} (@file{g-rannum.ads})
+@cindex @code{GNAT.Random_Numbers} (@file{g-rannum.ads})
+@cindex Random number generation
+
+@noindent
+Provides random number capabilities which extend those available in the
+standard Ada library and are more convenient to use.
+
 @node GNAT.Regexp (g-regexp.ads)
 @section @code{GNAT.Regexp} (@file{g-regexp.ads})
 @cindex @code{GNAT.Regexp} (@file{g-regexp.ads})
@@ -13530,15 +13753,25 @@ for the LynxOS@ cross port.
 Provides subprograms that give access to source code information known at
 compile time, such as the current file name and line number.
 
-@node GNAT.Spell_Checker (g-speche.ads)
-@section @code{GNAT.Spell_Checker} (@file{g-speche.ads})
-@cindex @code{GNAT.Spell_Checker} (@file{g-speche.ads})
+@node GNAT.Spelling_Checker (g-speche.ads)
+@section @code{GNAT.Spelling_Checker} (@file{g-speche.ads})
+@cindex @code{GNAT.Spelling_Checker} (@file{g-speche.ads})
 @cindex Spell checking
 
 @noindent
 Provides a function for determining whether one string is a plausible
 near misspelling of another string.
 
+@node GNAT.Spelling_Checker_Generic (g-spchge.ads)
+@section @code{GNAT.Spelling_Checker_Generic} (@file{g-spchge.ads})
+@cindex @code{GNAT.Spelling_Checker_Generic} (@file{g-spchge.ads})
+@cindex Spell checking
+
+@noindent
+Provides a generic function that can be instantiated with a string type for
+determining whether one string is a plausible near misspelling of another
+string.
+
 @node GNAT.Spitbol.Patterns (g-spipat.ads)
 @section @code{GNAT.Spitbol.Patterns} (@file{g-spipat.ads})
 @cindex @code{GNAT.Spitbol.Patterns} (@file{g-spipat.ads})
@@ -13617,22 +13850,6 @@ a string wherever the separators appear, and provide direct access
 to the resulting slices. This package is instantiated from
 @code{GNAT.Array_Split}.
 
-@node GNAT.UTF_32 (g-utf_32.ads)
-@section @code{GNAT.UTF_32} (@file{g-table.ads})
-@cindex @code{GNAT.UTF_32} (@file{g-table.ads})
-@cindex Wide character codes
-
-@noindent
-This is a package intended to be used in conjunction with the
-@code{Wide_Character} type in Ada 95 and the
-@code{Wide_Wide_Character} type in Ada 2005 (available
-in @code{GNAT} in Ada 2005 mode). This package contains
-Unicode categorization routines, as well as lexical
-categorization routines corresponding to the Ada 2005
-lexical rules for identifiers and strings, and also a
-lower case to upper case fold routine corresponding to
-the Ada 2005 rules for identifier equivalence.
-
 @node GNAT.Table (g-table.ads)
 @section @code{GNAT.Table} (@file{g-table.ads})
 @cindex @code{GNAT.Table} (@file{g-table.ads})
@@ -13687,10 +13904,40 @@ in various debugging situations.
 @cindex @code{GNAT.Traceback.Symbolic} (@file{g-trasym.ads})
 @cindex Trace back facilities
 
+@node GNAT.UTF_32 (g-utf_32.ads)
+@section @code{GNAT.UTF_32} (@file{g-table.ads})
+@cindex @code{GNAT.UTF_32} (@file{g-table.ads})
+@cindex Wide character codes
+
 @noindent
-Provides symbolic traceback information that includes the subprogram
-name and line number information. Note that this capability is not available
-on all targets, see g-trasym.ads for list of supported targets.
+This is a package intended to be used in conjunction with the
+@code{Wide_Character} type in Ada 95 and the
+@code{Wide_Wide_Character} type in Ada 2005 (available
+in @code{GNAT} in Ada 2005 mode). This package contains
+Unicode categorization routines, as well as lexical
+categorization routines corresponding to the Ada 2005
+lexical rules for identifiers and strings, and also a
+lower case to upper case fold routine corresponding to
+the Ada 2005 rules for identifier equivalence.
+
+@node GNAT.UTF_32_Spelling_Checker (g-u3spch.ads)
+@section @code{GNAT.Wide_Spelling_Checker} (@file{g-u3spch.ads})
+@cindex @code{GNAT.Wide_Spelling_Checker} (@file{g-u3spch.ads})
+@cindex Spell checking
+
+@noindent
+Provides a function for determining whether one wide wide string is a plausible
+near misspelling of another wide wide string, where the strings are represented
+using the UTF_32_String type defined in System.Wch_Cnv.
+
+@node GNAT.Wide_Spelling_Checker (g-wispch.ads)
+@section @code{GNAT.Wide_Spelling_Checker} (@file{g-wispch.ads})
+@cindex @code{GNAT.Wide_Spelling_Checker} (@file{g-wispch.ads})
+@cindex Spell checking
+
+@noindent
+Provides a function for determining whether one wide string is a plausible
+near misspelling of another wide string.
 
 @node GNAT.Wide_String_Split (g-wistsp.ads)
 @section @code{GNAT.Wide_String_Split} (@file{g-wistsp.ads})
@@ -13703,6 +13950,15 @@ a wide string wherever the separators appear, and provide direct access
 to the resulting slices. This package is instantiated from
 @code{GNAT.Array_Split}.
 
+@node GNAT.Wide_Wide_Spelling_Checker (g-zspche.ads)
+@section @code{GNAT.Wide_Wide_Spelling_Checker} (@file{g-zspche.ads})
+@cindex @code{GNAT.Wide_Wide_Spelling_Checker} (@file{g-zspche.ads})
+@cindex Spell checking
+
+@noindent
+Provides a function for determining whether one wide wide string is a plausible
+near misspelling of another wide wide string.
+
 @node GNAT.Wide_Wide_String_Split (g-zistsp.ads)
 @section @code{GNAT.Wide_Wide_String_Split} (@file{g-zistsp.ads})
 @cindex @code{GNAT.Wide_Wide_String_Split} (@file{g-zistsp.ads})
@@ -14026,7 +14282,7 @@ inter-operability between Ada tagged types and C++ class definitions.
 See @ref{Implementation Defined Pragmas}, for more details.
 
 @table @code
-@item pragma CPP_Class ([Entity =>] @var{local_NAME})
+@item pragma CPP_Class ([Entity =>] @var{LOCAL_NAME})
 The argument denotes an entity in the current declarative region that is
 declared as a tagged or untagged record type. It indicates that the type
 corresponds to an externally declared C++ class type, and is to be laid
@@ -14036,7 +14292,7 @@ Note: Pragma @code{CPP_Class} is currently obsolete. It is supported
 for backward compatibility but its functionality is available
 using pragma @code{Import} with @code{Convention} = @code{CPP}.
 
-@item pragma CPP_Constructor ([Entity =>] @var{local_NAME})
+@item pragma CPP_Constructor ([Entity =>] @var{LOCAL_NAME})
 This pragma identifies an imported function (imported in the usual way
 with pragma @code{Import}) as corresponding to a C++ constructor.
 @end table
index 73862deacfc59ae1134d71df65b8f415b720db45..15a30c5d3559ac666b71b7ffe0b120b71ff075f4 100644 (file)
@@ -3755,7 +3755,9 @@ Suppresses all back-end inlining, even if other optimization or inlining
 switches are set.
 This includes suppression of inlining that results
 from the use of the pragma @code{Inline_Always}.
-See also @option{-gnatn} and @option{-gnatN}.
+Any occurrences of pragma @code{Inline} or @code{Inline_Always}
+are ignored, and @option{-gnatn} and @option{-gnatN} have no
+effect if this switch is present.
 
 @item -fno-strict-aliasing
 @cindex @option{-fno-strict-aliasing} (@command{gcc})
@@ -3907,7 +3909,7 @@ Identifier character set
 For details of the possible selections for @var{c},
 see @ref{Character Set Control}.
 
-@item ^-gnatI^IGNORE_REP_CLAUSES^
+@item ^-gnatI^/IGNORE_REP_CLAUSES^
 @cindex @option{^-gnatI^IGNORE_REP_CLAUSES^} (@command{gcc})
 Ignore representation clauses. When this switch is used, all
 representation clauses are treated as comments. This is useful
@@ -4215,7 +4217,7 @@ Execute @var{ver} version of the compiler. This is the @command{gcc}
 version, not the GNAT version.
 @end ifclear
 
-@item ^-w^NO_BACK_END_WARNINGS^
+@item ^-w^/NO_BACK_END_WARNINGS^
 @cindex @option{-w} (@command{gcc})
 Turn off warnings generated by the back end of the compiler. Use of
 this switch also causes the default for front end warnings to be set
@@ -4582,6 +4584,9 @@ Out-of-range values being assigned
 @item
 Possible order of elaboration problems
 
+@item
+Assertions (pragma Assert) that are sure to fail
+
 @item
 Unreachable code
 
@@ -4735,6 +4740,22 @@ This switch suppresses all optional warning messages, see remaining list
 in this section for details on optional warning messages that can be
 individually controlled.
 
+@item -gnatw.a
+@emph{Activate warnings on failing assertions.}
+@cindex @option{-gnatw.a} (@command{gcc})
+@cindex Assert failures
+This switch activates warnings for assertions where the compiler can tell at
+compile time that the assertion will fail. Note that this warning is given
+even if assertions are disabled. The default is that such warnings are
+generated.
+
+@item -gnatw.A
+@emph{Suppress warnings on failing assertions.}
+@cindex @option{-gnatw.A} (@command{gcc})
+@cindex Assert failures
+This switch suppresses warnings for assertions where the compiler can tell at
+compile time that the assertion will fail.
+
 @item -gnatwb
 @emph{Activate warnings on bad fixed values.}
 @cindex @option{-gnatwb} (@command{gcc})
@@ -5642,7 +5663,9 @@ indentation level required.
 The general style of required indentation is as specified by
 the examples in the Ada Reference Manual. Full line comments must be
 aligned with the @code{--} starting on a column that is a multiple of
-the alignment level.
+the alignment level, or they may be aligned the same way as the following
+non-blank line (this is useful when full line comments appear in the middle
+of a statement.
 
 @item ^a^ATTRIBUTE^
 @emph{Check attribute casing.}
@@ -6438,8 +6461,13 @@ used, it must be used consistently throughout the program. However,
 since brackets encoding is always recognized, it may be conveniently
 used in standard libraries, allowing these libraries to be used with
 any of the available coding schemes.
-scheme. If no @option{-gnatW?} parameter is present, then the default
-representation is Brackets encoding only.
+scheme.
+
+If no @option{-gnatW?} parameter is present, then the default
+representation is normally Brackets encoding only. However, if the
+first three characters of the file are 16#EF# 16#BB# 16#BF# (the standard
+byte order mark or BOM for UTF-8), then these three characters are
+skipped and the default representation for the file is set to UTF-8.
 
 Note that the wide character representation that is specified (explicitly
 or by default) for the main program also acts as the default encoding used
@@ -7679,6 +7707,10 @@ All warning messages are suppressed
 Warning messages are treated as fatal errors
 @end ifset
 
+@item ^-Wx^/WIDE_CHARACTER_ENCODING=^@var{e}
+@cindex @option{^-Wx^/WIDE_CHARACTER_ENCODING^} (@code{gnatbind})
+Override default wide character encoding for standard Text_IO files.
+
 @item ^-x^/READ_SOURCES=NONE^
 @cindex @option{^-x^/READ_SOURCES^} (@code{gnatbind})
 Exclude source files (check object consistency only).
@@ -7724,6 +7756,16 @@ their consistency. In normal mode, if a source file cannot be located it
 is simply ignored. If you specify this switch, a missing source
 file is an error.
 
+@item ^-Wx^/WIDE_CHARACTER_ENCODING=^@var{e}
+@cindex @option{^-Wx^/WIDE_CHARACTER_ENCODING^} (@code{gnatbind})
+Override default wide character encoding for standard Text_IO files.
+Normally the default wide character encoding method used for standard
+[Wide_[Wide_]]Text_IO files is taken from the encoding specified for
+the main source input (see description of switch
+@option{^-gnatWx^/WIDE_CHARACTER_ENCODING^} for the compiler). The
+use of this switch for the binder (which has the same set of
+possible arguments) overrides this default as specified.
+
 @item ^-x^/READ_SOURCES=NONE^
 @cindex @option{^-x^/READ_SOURCES=NONE^} (@code{gnatbind})
 Exclude source files. In this mode, the binder only checks that ALI
@@ -8024,7 +8066,11 @@ The following switch is used to bind programs organized in this manner:
 Normally the binder checks that the unit name given on the command line
 corresponds to a suitable main subprogram. When this switch is used,
 a list of ALI files can be given, and the execution of the program
-consists of elaboration of these units in an appropriate order.
+consists of elaboration of these units in an appropriate order. Note
+that the default wide character encoding method for standard Text_IO
+files is always set to Brackets if this switch is set (you can use
+the binder switch
+@option{^-Wx^WIDE_CHARACTER_ENCODING^} to override this default).
 @end table
 
 @node Command-Line Access
@@ -13164,15 +13210,20 @@ conditions:
 @itemize @bullet
 @item It must not be empty
 @item It must include at least one dot
-@item It cannot end with the same string as @code{Spec_Suffix ("Ada")}
+@item It cannot be the same as @code{Spec_Suffix ("Ada")}
 @end itemize
 @noindent
+If @code{Body_Suffix ("Ada")} and @code{Spec_Suffix ("Ada")} end with the
+same string, then a file name that ends with the longest of these two suffixes
+will be a body if the longest suffix is @code{Body_Suffix ("Ada")} or a spec
+if the longest suffix is @code{Spec_Suffix ("Ada")}.
+
 If @code{Body_Suffix ("Ada")} is not specified, then the default is
 @code{"^.adb^.ADB^"}.
 
 @item @var{Separate_Suffix}
 This must be a string whose value satisfies the same conditions as
-@code{Body_Suffix}.
+@code{Body_Suffix}. The same "longest suffix" rules apply.
 
 @noindent
 If @code{Separate_Suffix ("Ada")} is not specified, then it defaults to same
@@ -15523,7 +15574,13 @@ case if the specification occupies more then one line.
 @cindex @option{^--separate-loop-then^/SEPARATE_LOOP_THEN^} (@command{gnatpp})
 @item ^--separate-loop-then^/SEPARATE_LOOP_THEN^
 Place the keyword @code{loop} in FOR and WHILE loop statements and the
-keywird @code{then} in IF statements on a separate line.
+keyword @code{then} in IF statements on a separate line.
+
+@cindex @option{^--no-separate-loop-then^/NO_SEPARATE_LOOP_THEN^} (@command{gnatpp})
+@item ^--no-separate-loop-then^/NO_SEPARATE_LOOP_THEN^
+Do not place the keyword @code{loop} in FOR and WHILE loop statements and the
+keyw0rd @code{then} in IF statements on a separate line. This option is
+incompatible with @option{^--separate-loop-then^/SEPARATE_LOOP_THEN^} option.
 
 @cindex @option{^--use-on-new-line^/USE_ON_NEW_LINE^} (@command{gnatpp})
 @item ^--use-on-new-line^/USE_ON_NEW_LINE^
index 5b8d59bd5a7f2887ef00b6e1eaca4f144d1e24d0..dc2675b33c93aa3477d981041a3bd730a85c9b80 100644 (file)
@@ -622,6 +622,26 @@ package VMS_Data is
                                             "-ws";
    --  NODOC (see /WARNINGS)
 
+   S_Bind_Wide    : aliased constant S := "/WIDE_CHARACTER_ENCODING="      &
+                                            "BRACKETS "                    &
+                                               "-gnatWb "                  &
+                                            "HEX "                         &
+                                               "-gnatWh "                  &
+                                            "UPPER "                       &
+                                               "-gnatWu "                  &
+                                            "SHIFT_JIS "                   &
+                                               "-gnatWs "                  &
+                                            "UTF8 "                        &
+                                               "-gnatW8 "                  &
+                                            "EUC "                         &
+                                               "-gnatWe";
+   --        /NOWIDE_CHARACTER_ENCODING (D)
+   --        /WIDE_CHARACTER_ENCODING[=encode-type]
+   --
+   --   Specifies the mechanism used to encode wide characters, overriding
+   --   the default as set by the /WIDE_CHARACTER_ENCODING option for the
+   --   compilation of the main program.
+
    S_Bind_Zero    : aliased constant S := "/ZERO_MAIN "                    &
                                             "-z";
    --        /NOZERO_MAIN (D)
@@ -677,6 +697,7 @@ package VMS_Data is
                       S_Bind_Verbose 'Access,
                       S_Bind_Warn    'Access,
                       S_Bind_WarnX   'Access,
+                      S_Bind_Wide    'Access,
                       S_Bind_Zero    'Access);
 
    -----------------------------
@@ -2594,6 +2615,10 @@ package VMS_Data is
                                                "-gnatwA "                  &
                                             "ALL_GCC "                     &
                                                "-Wall "                    &
+                                            "FAILING_ASSERTIONS "          &
+                                               "-gnatw.a "                 &
+                                            "NO_FAILING_ASSERTIONS "       &
+                                               "-gnatw.A "                 &
                                             "BAD_FIXED_VALUES "            &
                                                "-gnatwb "                  &
                                             "NO_BAD_FIXED_VALUES "         &
@@ -5261,6 +5286,13 @@ package VMS_Data is
    --   Place the THEN keyword in IF statement and the LOOP keyword in for-
    --   and while-loops on a separate line.
 
+   S_Pretty_N_Sep_Loop_Then : aliased constant S := "/NO_SEPARATE_LOOP_THEN " &
+                                                    "--no-separate-loop-then";
+   --        /NO_SEPARATE_LOOP_THEN
+   --
+   --   Do not place the THEN keyword in IF statement and the LOOP keyword in
+   --   for- and while-loops on a separate line.
+
    S_Pretty_Use_On_New_Line : aliased constant S := "/USE_ON_NEW_LINE "   &
                                                       "--use-on-new-line";
    --        /USE_ON_NEW_LINE
@@ -5617,6 +5649,7 @@ package VMS_Data is
                         S_Pretty_RTS            'Access,
                         S_Pretty_Search         'Access,
                         S_Pretty_Sep_Loop_Then  'Access,
+                        S_Pretty_N_Sep_Loop_Then'Access,
                         S_Pretty_Use_On_New_Line'Access,
                         S_Pretty_Stnm_On_Nw_Line'Access,
                         S_Pretty_Specific       'Access,