aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2019-08-21 18:08:42 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2019-08-21 18:08:42 +0000
commit281de4253d972d89f21b2bc3ef4050f88e3fcf3c (patch)
treef786e3135d91f2f3676e58b54e313fc5e368cb9c /gcc/ada
parentb74c00bd10bc789bc2fc4d56b02e25bb431611f2 (diff)
parenteda684e6a77890bd5e13ceab99d95bc1e8439212 (diff)
downloadgcc-281de4253d972d89f21b2bc3ef4050f88e3fcf3c.zip
gcc-281de4253d972d89f21b2bc3ef4050f88e3fcf3c.tar.gz
gcc-281de4253d972d89f21b2bc3ef4050f88e3fcf3c.tar.bz2
Merge from trunk revision 274803.
From-SVN: r274804
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/ChangeLog401
-rw-r--r--gcc/ada/Makefile.rtl2
-rw-r--r--gcc/ada/adaint.c9
-rw-r--r--gcc/ada/ali.adb2
-rw-r--r--gcc/ada/ali.ads12
-rw-r--r--gcc/ada/aspects.adb4
-rw-r--r--gcc/ada/bindgen.adb15
-rw-r--r--gcc/ada/bindo-graphs.adb2
-rw-r--r--gcc/ada/bindo-graphs.ads2
-rw-r--r--gcc/ada/checks.adb10
-rw-r--r--gcc/ada/checks.ads2
-rw-r--r--gcc/ada/doc/Makefile14
-rw-r--r--gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst64
-rw-r--r--gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst25
-rw-r--r--gcc/ada/einfo.adb12
-rw-r--r--gcc/ada/einfo.ads14
-rw-r--r--gcc/ada/errout.adb2
-rw-r--r--gcc/ada/erroutc.adb200
-rw-r--r--gcc/ada/erroutc.ads2
-rw-r--r--gcc/ada/exp_aggr.adb18
-rw-r--r--gcc/ada/exp_attr.adb19
-rw-r--r--gcc/ada/exp_ch11.adb7
-rw-r--r--gcc/ada/exp_ch13.adb40
-rw-r--r--gcc/ada/exp_ch3.adb9
-rw-r--r--gcc/ada/exp_ch3.ads8
-rw-r--r--gcc/ada/exp_ch4.adb26
-rw-r--r--gcc/ada/exp_ch5.adb160
-rw-r--r--gcc/ada/exp_ch6.adb158
-rw-r--r--gcc/ada/exp_disp.adb42
-rw-r--r--gcc/ada/exp_spark.adb42
-rw-r--r--gcc/ada/exp_unst.adb43
-rw-r--r--gcc/ada/exp_util.adb12
-rw-r--r--gcc/ada/freeze.adb1
-rw-r--r--gcc/ada/gcc-interface/lang.opt2
-rw-r--r--gcc/ada/gcc-interface/misc.c2
-rw-r--r--gcc/ada/gnat_rm.texi1744
-rw-r--r--gcc/ada/gnat_ugn.texi32
-rw-r--r--gcc/ada/impunit.adb17
-rw-r--r--gcc/ada/inline.adb4
-rw-r--r--gcc/ada/lib-load.adb33
-rw-r--r--gcc/ada/lib-writ.adb1
-rw-r--r--gcc/ada/lib.adb44
-rw-r--r--gcc/ada/lib.ads41
-rw-r--r--gcc/ada/libgnat/a-cborma.adb4
-rw-r--r--gcc/ada/libgnat/a-cborse.adb4
-rw-r--r--gcc/ada/libgnat/a-cofove.ads49
-rw-r--r--gcc/ada/libgnat/a-locale.ads6
-rw-r--r--gcc/ada/libgnat/g-comlin.ads4
-rw-r--r--gcc/ada/libgnat/g-expect.adb16
-rw-r--r--gcc/ada/libgnat/s-bitfie.ads56
-rw-r--r--gcc/ada/libgnat/s-bituti.adb320
-rw-r--r--gcc/ada/libgnat/s-bituti.ads132
-rw-r--r--gcc/ada/libgnat/s-soflin.ads7
-rw-r--r--gcc/ada/opt.ads33
-rw-r--r--gcc/ada/par-ch4.adb4
-rw-r--r--gcc/ada/par-prag.adb17
-rw-r--r--gcc/ada/par_sco.adb4
-rw-r--r--gcc/ada/repinfo.adb55
-rw-r--r--gcc/ada/rtsfind.ads5
-rw-r--r--gcc/ada/sem_aggr.adb5
-rw-r--r--gcc/ada/sem_ch13.adb149
-rw-r--r--gcc/ada/sem_ch3.adb52
-rw-r--r--gcc/ada/sem_ch4.adb48
-rw-r--r--gcc/ada/sem_ch5.adb11
-rw-r--r--gcc/ada/sem_ch8.adb2
-rw-r--r--gcc/ada/sem_ch9.adb3
-rw-r--r--gcc/ada/sem_disp.adb4
-rw-r--r--gcc/ada/sem_elab.adb4
-rw-r--r--gcc/ada/sem_eval.adb28
-rw-r--r--gcc/ada/sem_prag.adb125
-rw-r--r--gcc/ada/sem_spark.adb42
-rw-r--r--gcc/ada/sem_spark.ads3
-rw-r--r--gcc/ada/sem_util.adb70
-rw-r--r--gcc/ada/sem_util.ads6
-rw-r--r--gcc/ada/sinfo.ads3
-rw-r--r--gcc/ada/snames.ads-tmpl2
-rw-r--r--gcc/ada/stringt.adb11
-rw-r--r--gcc/ada/stringt.ads3
-rw-r--r--gcc/ada/warnsw.adb11
-rw-r--r--gcc/ada/warnsw.ads7
80 files changed, 3182 insertions, 1422 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index e59b709..53ecd1a 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,404 @@
+2019-08-21 Vadim Godunko <godunko@adacore.com>
+
+ * libgnat/g-expect.adb (Expect_Internal): Attempt to read
+ several times when 'read' returns non-positive.
+
+2019-08-21 Piotr Trojanek <trojanek@adacore.com>
+
+ * einfo.adb (Is_Discriminal): Remove extra parens.
+ (Is_Constant_Object): Simplify by reusing Ekind_In.
+ (Is_Prival): Remove extra parens.
+ * checks.adb, exp_ch4.adb, sem_ch3.adb, sem_spark.adb: Minor
+ reformattings.
+
+2019-08-21 Claire Dross <dross@adacore.com>
+
+ * libgnat/a-cofove.ads (Vector): Add an Iterable aspect to allow
+ iteration.
+ (Iter_First, Iter_Next): Primitives used for iteration.
+
+2019-08-21 Yannick Moy <moy@adacore.com>
+
+ * sem_ch3.adb (Analyze_Subtype_Declaration): Inherit RM_Size
+ field for formal type parameters in generic instantiations.
+
+2019-08-21 Yannick Moy <moy@adacore.com>
+
+ * sem_spark.adb: Update references to the SPARK RM.
+
+2019-08-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * repinfo.adb (List_Array_Info): In -gnatR4 mode, set the
+ relevant flag on the component type here instead of...
+ (List_Object_Info): Likewise for the object type.
+ (List_Entities): ...here. In -gnatR4 mode, recurse into
+ entities local to a record type.
+ (List_Component_Layout): In -gnatR4 mode, mark the type as
+ relevant.
+
+2019-08-21 Bob Duff <duff@adacore.com>
+
+ * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add s-bitutil.o and
+ s-biutin.o.
+ * exp_ch5.adb (Expand_Assign_Array_Bitfield): New function to
+ generate a call to Copy_Bitfield. This is disabled for now.
+ (Expand_Assign_Array_Loop_Or_Bitfield): New function to decide
+ whether to call Expand_Assign_Array_Bitfield.
+ (Expand_Assign_Array): Call Expand_Assign_Array_Loop_Or_Bitfield
+ instead of Expand_Assign_Array_Loop.
+ * libgnat/s-bitfie.ads, libgnat/s-bituti.adb,
+ libgnat/s-bituti.ads: New units.
+ * rtsfind.ads: Add enum literals for accessing Copy_Bitfield.
+
+2019-08-21 Piotr Trojanek <trojanek@adacore.com>
+
+ * bindo-graphs.ads (Iterate_Edges_To_Successors): Fix typo in
+ pragma Inline.
+ * bindo-graphs.adb (Delete_Edge): Fix layout in parameter list.
+
+2019-08-21 Gary Dismukes <dismukes@adacore.com>
+
+ * exp_ch3.adb (Build_Master): Suppress call to
+ Build_Class_Wide_Master in the case where the
+ access-to-limited-class-wide type was created for a component in
+ an entry's formal parameter
+ block (Is_Parameter_Block_Component_Type), to prevent a master
+ from being created for such access types generated by the front
+ end in a task spec for entry formals in a parameter block. Add
+ a ??? about whether this suppression should be done more
+ generally (such as by using Comes_From_Source).
+
+2019-08-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch6.adb (Expand_N_Extended_Return_Statement): In the case
+ of a built-in-place function that doesn't need a BIP_Alloc_Form
+ parameter but returns unconstrained, build the return
+ consistently using the function's result subtype. Remove bypass
+ added in previous change.
+
+2019-08-21 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_prag.adb (Max_Entry_Queue_Length): Do not substitute
+ expression of the pragma argument with its value during
+ analysis.
+ * sem_util.adb (Get_Max_Queue_Length): Compute value of the
+ pragma argument when needed.
+
+2019-08-21 Yannick Moy <moy@adacore.com>
+
+ * checks.adb (Install_Null_Excluding_Check): Do not install
+ check in GNATprove mode.
+
+2019-08-21 Yannick Moy <moy@adacore.com>
+
+ * sem_spark.adb (Process_Path): Do nothing on address of
+ subprogram.
+
+2019-08-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_util.adb (Finalize_Address): Deal consistently with
+ subtypes of private protected types.
+
+2019-08-21 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_util.adb (Corresponding_Runtime_Package): Use high-level
+ Is_Protected_Type.
+ * sem_ch8.adb (Analyze_Renamed_Entry): Likewise.
+ * sem_ch9.adb (Analyze_Requeue): Likewise.
+
+2019-08-21 Javier Miranda <miranda@adacore.com>
+
+ * sem_util.adb (Update_Named_Associations): Update
+ First_Named_Actual when the subprogram call has a single named
+ actual.
+
+2019-08-21 Joel Brobecker <brobecker@adacore.com>
+
+ * doc/Makefile (mk_empty_dirs): New (PHONY) rule.
+ (%.html, %.pdf, %.txt, %.info, %.texinfo): Add dependencies on
+ mk_empty_dirs.
+
+2019-08-21 Justin Squirek <squirek@adacore.com>
+
+ * doc/gnat_rm/implementation_defined_pragmas.rst: Modify
+ documentation to reflect expected behavior.
+ * gnat_rm.texi: Regenerate.
+ * sem_prag.adb (Analyze_Pragma): Modify handling of pragma
+ Max_Entry_Queue_Length to not reject integer values of negative
+ one.
+ * sem_util.adb (Get_Max_Queue_Length): Add processing for values
+ of negative one to fit within the current scheme.
+
+2019-08-20 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_unst.adb (Unnest_Subprograms, Unnest_Subprogram): Take
+ inlining (-gnatn) into account.
+
+2019-08-20 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_ch13.adb (Expand_N_Attribute_Definition_Clause, case
+ Storage_Size): If the expression for Storage_Size is not static
+ it may depend on characterstics of another type that may bot be
+ frozen yet, so the elaboration of the expression for the aspect
+ must be attached directly to the freeze actions of the type to
+ which it applies.
+
+2019-08-20 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_util.adb (Build_DIC_Procedure_Declaration): Set the last
+ entity of the generated Default_Initial_Condition procedure in
+ order to construct a proper entity chain.
+
+2019-08-20 Yannick Moy <moy@adacore.com>
+
+ * exp_spark.adb (Expand_SPARK_N_Slice_Or_Indexed_Component):
+ Renaming of function to apply to slices as well.
+ (Expand_SPARK): Expand prefix of slices of access type.
+
+2019-08-20 Bob Duff <duff@adacore.com>
+
+ * exp_aggr.adb (Expand_Array_Aggregate): Use build-in-place in
+ the nonlimited case in STEP 4. This improves the efficiency of
+ things like (1 .. 1000 => <>). We still generate some code for
+ that, unfortunately, but it is much improved.
+ (Aggr_Assignment_OK_For_Backend): Return false if <> components
+ are present.
+
+2019-08-20 Bob Duff <duff@adacore.com>
+
+ * exp_ch6.adb (Needs_BIP_Alloc_Form): Call
+ Requires_Transient_Scope rather than checking constrainedness
+ and so forth. We have previously improved
+ Requires_Transient_Scope to return False in various cases,
+ notably a limited record with an access discriminant. This
+ change takes advantage of that to avoid using the secondary
+ stack for functions returning such types.
+ (Make_Build_In_Place_Call_In_Allocator): Be consistent by
+ calling Needs_BIP_Alloc_Form rather than Is_Constrained and so
+ forth.
+ * sem_ch4.adb (Analyze_Allocator): The above change causes the
+ compiler to generate code that is not legal Ada, in particular
+ an uninitialized allocator for indefinite subtype. This is
+ harmless, so we suppress the error message in this case.
+
+2019-08-20 Gary Dismukes <dismukes@adacore.com>
+
+ * ali.adb, ali.ads, aspects.adb, checks.ads, checks.adb,
+ doc/gnat_rm/implementation_defined_pragmas.rst,
+ doc/gnat_ugn/building_executable_programs_with_gnat.rst,
+ einfo.ads, exp_aggr.adb, exp_ch11.adb, exp_ch3.ads, exp_ch4.adb,
+ exp_disp.adb, inline.adb, libgnat/a-locale.ads,
+ libgnat/s-soflin.ads, par_sco.adb, repinfo.adb, sem_ch5.adb,
+ sem_disp.adb, sem_elab.adb, sem_eval.adb, sem_spark.adb,
+ sem_spark.ads, sinfo.ads: Minor reformattings, typo fixes and
+ and rewordings.
+
+2019-08-20 Dmitriy Anisimkov <anisimko@adacore.com>
+
+ * adaint.c (__gnat_to_gm_time): On _WIN32, don't round time up
+ to even second.
+
+2019-08-20 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch3.adb (Analyze_Object_Declaration): If actual type is
+ private and distinct from nominal type in declaration, propagate
+ flags Is_Constr_Subt_For_U_Nominal and _UN_Aliased to full view
+ of private type.
+
+2019-08-20 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_attr.adb (Expand_Loop_Entry_Attribute): When expanding a
+ loop entry attribute for a while_loop we construct a function
+ that incorporates the expanded condition of the loop. The itypes
+ that may be generated in that expansion must carry the scope of
+ the constructed function for proper handling in gigi.
+
+2019-08-20 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_disp.adb (Build_Class_Wide_Check, Replace_Formals): When a
+ dispatching call tp a subprogram with a class-wide precondition
+ occurrs in the same declarative part as the ancestor subprogram
+ being called, the`expression for the precondition has not been
+ analyzed yet. Such a call may appear, e.g. in an expression
+ function. In that case, the replacement of formals by actuals in
+ the call cannot use the formal entities of the subprogram being
+ called, and the occurrence of the formals in the expression must
+ be located by name (Chars fields) as would be done at a later
+ freeze point, when the expression is resolved in the context of
+ the subprogram itself.
+
+2019-08-20 Bob Duff <duff@adacore.com>
+
+ * sem_prag.adb (Persistent_BSS): If an initialization is present
+ because of Initialize_Scalars or Normalize_Scalars, generate an
+ implicit pragma Suppress_Initialization to remove that, because
+ initialization is not allowed for these variables. Other
+ initializations remain illegal.
+
+2019-08-20 Gary Dismukes <dismukes@adacore.com>
+
+ * sem_ch3.adb (OK_For_Limited_Init_In_05): In the case of type
+ conversions, apply the recursive call to the Original_Node of
+ the expression Exp rather than the Expression of the
+ Original_Node, in the case where Exp has been rewritten;
+ otherwise, when Original_Node is the same as Exp, apply the
+ recursive call to the Expression.
+ (Check_Initialization): Revise condition for special check on
+ type conversions of limited function calls to test Original_Node
+ (avoiding spurious errors on expanded unchecked conversions
+ applied to build-in-place dispatching calls).
+
+2019-08-20 Patrick Bernardi <bernardi@adacore.com>
+
+ * exp_aggr.adb (Expand_Record_Aggregate): Always convert a
+ record Aggregate to assignment statements if the option
+ Aggregate_Individually_Assign is set.
+ * opt.ads (Aggregate_Individually_Assign): New option.
+ * par-prag.adb (Prag): Add Pragma_Aggregate_Individually_Assign.
+ * sem_prag.adb (Analyze_Pragma): Likewise.
+ * snames.ads-tmpl: Add Pragma_Aggregate_Individually_Assign and
+ Name_Aggregate_Individually_Assign.
+ * doc/gnat_rm/implementation_defined_pragmas.rst: Document
+ pragma Aggregate_Individually_Assign.
+ * gnat_rm.texi: Regenerate.
+
+2019-08-20 Bob Duff <duff@adacore.com>
+
+ * par-ch4.adb: Minor wording change in error messages.
+ * sem_aggr.adb (Resolve_Delta_Aggregate): Emit an error for Ada
+ versions prior to Ada 2020.
+
+2019-08-20 Bob Duff <duff@adacore.com>
+
+ * freeze.adb (Is_Atomic_VFA_Aggregate): Make the temp for
+ initialization of the atomic variable be constant. This is
+ cleaner, and might improve efficiency.
+
+2019-08-20 Eric Botcazou <ebotcazou@adacore.com>
+
+ * repinfo.adb (List_Record_Info): In -gnatR4 mode, set the
+ relevant flag on the implicit base type of a record subtype.
+
+2019-08-20 Bob Duff <duff@adacore.com>
+
+ * sem_eval.adb (Expr_Value): Implement the case of an unchecked
+ conversion of a static expression.
+
+2019-08-20 Bob Duff <duff@adacore.com>
+
+ * sem_ch13.adb (Is_Null_Array): New function, used to detect the
+ null array case; used to warn about uncheckedly converting to a
+ zero-sized array. It is unfortunate that we can't just check
+ the size, and warn on all cases of converting from a
+ nonzero-sized type to a zero-sized one. That's because "0" means
+ two different things: "size is zero" and "size is unknown".
+ Until we fix that design flaw, we need this more targeted fix.
+
+2019-08-20 Bob Duff <duff@adacore.com>
+
+ * libgnat/a-cborma.adb, libgnat/a-cborse.adb (Clear): Repeatedly
+ call Delete. This avoids clearing the free list, which
+ substantially speeds up future Delete operations.
+
+2019-08-20 Bob Duff <duff@adacore.com>
+
+ * sem_ch13.adb (Component_Order_Check): New procedure to check
+ for out-of-order clauses.
+ * warnsw.ads, warnsw.adb: New -gnatw_r switch.
+ * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
+ Document new switch.
+ * gnat_ugn.texi: Regenerate.
+
+2019-08-20 Bob Duff <duff@adacore.com>
+
+ * sem_ch13.adb (Object_Size): Give an error for zero. It really
+ rubs me the wrong way that we don't honor "for T'Object_Size use
+ 0;", but it's not important enough to fix. In any case, if we're
+ not going to obey the clause, we should give an error.
+
+2019-08-20 Bob Duff <duff@adacore.com>
+
+ * errout.adb (Error_Msg_Internal): Set Warn_Err in case of
+ Is_Style_Msg.
+ * erroutc.adb (Output_Msg_Text): Do Warnings_Treated_As_Errors
+ processing and [warning-as-error] modification for style
+ messages. Clean up code, simplify, remove unnecessary block
+ statement, add renaming of table entry.
+ * erroutc.ads (Warning_Treated_As_Error): Fix comment: no such
+ thing as Set_Warning_As_Error.
+ * opt.ads: Clean up comments and move related declarations near
+ each other.
+ * par-prag.adb: Process Warning_As_Error. This is necessary
+ because many style warning happen during parsing.
+ * sem_prag.adb: Use new Acquire_Warning_Match_String.
+ * sem_util.ads, sem_util.adb (Acquire_Warning_Match_String): New
+ function shared by par-prag.adb and sem_prag.adb. Replaces the
+ procedure in sem_prag.adb. Avoid use of global variables.
+ * stringt.ads, stringt.adb (To_String): New function to convert
+ String_Id to String.
+ * doc/gnat_rm/implementation_defined_pragmas.rst: Document the
+ new feature.
+ * gnat_rm.texi: Regenerate.
+
+2019-08-20 Eric Botcazou <ebotcazou@adacore.com>
+
+ * lib.ads: Add with clause for GNAT.HTable.
+ Add pragma Inline for Is_Loaded and alphabetize the list.
+ (Unit_Name_Table_Size): New constant.
+ (Unit_Name_Header_Num): New subtype.
+ (Unit_Name_Hash): New function declaration.
+ (Unit_Names): New simple hash table.
+ (Init_Unit_Name): New procedure declaration.
+ * lib.adb (Set_Unit_Name): Unregister the old name in the table,
+ if any, and then register the new name.
+ (Init_Unit_Name): New procedure.
+ (Is_Loaded): Reimplement using a lookup in the names table.
+ (Remove_Unit): Unregister the name.
+ (Unit_Name_Hash): New function.
+ * lib-load.adb (Create_Dummy_Package_Unit): Call Init_Unit_Name.
+ (Load_Unit): Use a lookup in the names table to find out whether
+ the unit has already been loaded. Call Init_Unit_Name and then
+ Remove_Unit if the loading has failed.
+ (Make_Child_Decl_Unit): Call Init_Unit_Name.
+ (Make_Instance_Unit): Likewise.
+ * lib-writ.adb (Ensure_System_Dependency): Likewise.
+
+2019-08-20 Bob Duff <duff@adacore.com>
+
+ * sem_ch13.adb (Record_Hole_Check): Initialize After_Last.
+
+2019-08-20 Piotr Trojanek <trojanek@adacore.com>
+
+ * impunit.adb (Get_Kind_Of_Unit): Revert change for adapting
+ this routine for gnatprove.
+
+2019-08-20 Arnaud Charlet <charlet@adacore.com>
+
+ * doc/gnat_rm/implementation_defined_pragmas.rst: Document
+ requirements for Pragma Lock_Free.
+ * gnat_rm.texi: Regenerate.
+
+2019-08-20 Philippe Gil <gil@adacore.com>
+
+ * bindgen.adb (Gen_Main): Set gnat_argc/gnat_argv to argc/argv
+ only when still uninitialized.
+
+2019-08-20 Bob Duff <duff@adacore.com>
+
+ * libgnat/g-comlin.ads (Exit_From_Command_Line): Fix
+ documentation for GNAT.Command_Line.
+
+2019-08-20 Pierre-Marie de Rodat <derodat@adacore.com>
+
+ PR ada/91492
+ * gcc-interface/lang.opt (-fdump-scos): Add missing dot at the
+ end of the documentation.
+
+2019-08-20 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc-interface/misc.c (default_pass_by_ref): Update call to
+ pass_by_reference.
+
2019-08-19 Bob Duff <duff@adacore.com>
* doc/gnat_rm/implementation_advice.rst: Fix documentation for
diff --git a/gcc/ada/Makefile.rtl b/gcc/ada/Makefile.rtl
index c1a422f..e5aa6b8 100644
--- a/gcc/ada/Makefile.rtl
+++ b/gcc/ada/Makefile.rtl
@@ -502,7 +502,9 @@ GNATRTL_NONTASKING_OBJS= \
s-atopri$(objext) \
s-auxdec$(objext) \
s-bignum$(objext) \
+ s-bitfie$(objext) \
s-bitops$(objext) \
+ s-bituti$(objext) \
s-boarop$(objext) \
s-boustr$(objext) \
s-bytswa$(objext) \
diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c
index fe8d955..7290f7a 100644
--- a/gcc/ada/adaint.c
+++ b/gcc/ada/adaint.c
@@ -344,7 +344,7 @@ int __gnat_use_acl = 1;
system provides the routine readdir_r.
... but we never define it anywhere??? */
#undef HAVE_READDIR_R
-
+
#define MAYBE_TO_PTR32(argv) argv
static const char ATTR_UNSET = 127;
@@ -411,13 +411,6 @@ __gnat_to_gm_time (OS_Time *p_time, int *p_year, int *p_month, int *p_day,
struct tm *res;
time_t time = (time_t) *p_time;
-#ifdef _WIN32
- /* On Windows systems, the time is sometimes rounded up to the nearest
- even second, so if the number of seconds is odd, increment it. */
- if (time & 1)
- time++;
-#endif
-
res = gmtime (&time);
if (res)
{
diff --git a/gcc/ada/ali.adb b/gcc/ada/ali.adb
index ab98104..8d1d54a 100644
--- a/gcc/ada/ali.adb
+++ b/gcc/ada/ali.adb
@@ -649,7 +649,7 @@ package body ALI is
Xref.Init;
Xref_Section.Init;
- -- Add dummy zero'th item in Linker_Options and Notes for sort calls
+ -- Add dummy zeroth item in Linker_Options and Notes for sort calls
Linker_Options.Increment_Last;
Notes.Increment_Last;
diff --git a/gcc/ada/ali.ads b/gcc/ada/ali.ads
index 22bf8a2..5e2ec71 100644
--- a/gcc/ada/ali.ads
+++ b/gcc/ada/ali.ads
@@ -727,9 +727,9 @@ package ALI is
-- but before the entries from the run-time.
end record;
- -- The indexes of active entries in this table range from 1 to
- -- the value of Linker_Options.Last. The zero'th element is for
- -- convenience if the table needs to be sorted.
+ -- The indexes of active entries in this table range from 1 to the value of
+ -- Linker_Options.Last. The zeroth element is for convenience if the table
+ -- needs to be sorted.
package Linker_Options is new Table.Table (
Table_Component_Type => Linker_Option_Record,
@@ -765,9 +765,9 @@ package ALI is
-- location to the last character on the line.
end record;
- -- The indexes of active entries in this table range from 1 to the
- -- value of Notes.Last. The zero'th element is for convenience if
- -- the table needs to be sorted.
+ -- The indexes of active entries in this table range from 1 to the value of
+ -- Notes.Last. The zeroth element is for convenience if the table needs to
+ -- be sorted.
package Notes is new Table.Table (
Table_Component_Type => Notes_Record,
diff --git a/gcc/ada/aspects.adb b/gcc/ada/aspects.adb
index d582abf..3b8b7c4 100644
--- a/gcc/ada/aspects.adb
+++ b/gcc/ada/aspects.adb
@@ -226,8 +226,8 @@ package body Aspects is
end if;
if Is_Private_Type (Owner)
- and then Present (Full_View (Owner))
- and then not Operational_Aspect (A)
+ and then Present (Full_View (Owner))
+ and then not Operational_Aspect (A)
then
Owner := Full_View (Owner);
end if;
diff --git a/gcc/ada/bindgen.adb b/gcc/ada/bindgen.adb
index 8ea8a6b..153043c 100644
--- a/gcc/ada/bindgen.adb
+++ b/gcc/ada/bindgen.adb
@@ -1826,18 +1826,25 @@ package body Bindgen is
WBI (" begin");
- -- Acquire command line arguments if present on target
+ -- Acquire command-line arguments if present on target
if CodePeer_Mode then
null;
elsif Command_Line_Args_On_Target then
- WBI (" gnat_argc := argc;");
- WBI (" gnat_argv := argv;");
+
+ -- Initialize gnat_argc/gnat_argv only if not already initialized,
+ -- to avoid losing the result of any command-line processing done by
+ -- earlier GNAT run-time initialization.
+
+ WBI (" if gnat_argc = 0 then");
+ WBI (" gnat_argc := argc;");
+ WBI (" gnat_argv := argv;");
+ WBI (" end if;");
WBI (" gnat_envp := envp;");
WBI ("");
- -- If configurable run time and no command line args, then nothing needs
+ -- If configurable run-time and no command-line args, then nothing needs
-- to be done since the gnat_argc/argv/envp variables are suppressed in
-- this case.
diff --git a/gcc/ada/bindo-graphs.adb b/gcc/ada/bindo-graphs.adb
index c2f9d6c..e7585e2 100644
--- a/gcc/ada/bindo-graphs.adb
+++ b/gcc/ada/bindo-graphs.adb
@@ -1144,7 +1144,7 @@ package body Bindo.Graphs is
-- successor.
procedure Delete_Edge
- (G : Library_Graph;
+ (G : Library_Graph;
Edge : Library_Graph_Edge_Id);
pragma Inline (Delete_Edge);
-- Delete edge Edge from library graph G
diff --git a/gcc/ada/bindo-graphs.ads b/gcc/ada/bindo-graphs.ads
index f376801..339c7f8 100644
--- a/gcc/ada/bindo-graphs.ads
+++ b/gcc/ada/bindo-graphs.ads
@@ -1406,7 +1406,7 @@ package Bindo.Graphs is
function Iterate_Edges_To_Successors
(G : Library_Graph;
Vertex : Library_Graph_Vertex_Id) return Edges_To_Successors_Iterator;
- pragma Inline (Iterate_Components);
+ pragma Inline (Iterate_Edges_To_Successors);
-- Obtain an iterator over all edges to successors with predecessor
-- vertex Vertex of library graph G.
diff --git a/gcc/ada/checks.adb b/gcc/ada/checks.adb
index 03cfcef..caee9ad 100644
--- a/gcc/ada/checks.adb
+++ b/gcc/ada/checks.adb
@@ -2471,7 +2471,7 @@ package body Checks is
(Formal : Entity_Id;
Prag_Nam : Name_Id;
For_Result : Boolean := False);
- -- Add a single 'Valid[_Scalar] check which verifies the initialization
+ -- Add a single 'Valid[_Scalars] check which verifies the initialization
-- of Formal. Prag_Nam denotes the pre or post condition pragma name.
-- Set flag For_Result when to verify the result of a function.
@@ -6994,7 +6994,7 @@ package body Checks is
-- Next test for the case where the target type is within the bounds
-- of the base type of the source type, since in this case we can
- -- simply convert the bounds of the target type to this base bype
+ -- simply convert the bounds of the target type to this base type
-- to do the test.
-- [constraint_error when N not in
@@ -7964,6 +7964,12 @@ package body Checks is
return;
end if;
+ -- In GNATprove mode, we do not apply the check
+
+ if GNATprove_Mode then
+ return;
+ end if;
+
-- Otherwise install access check
Insert_Action (N,
diff --git a/gcc/ada/checks.ads b/gcc/ada/checks.ads
index e2ac6ae..9bf2908 100644
--- a/gcc/ada/checks.ads
+++ b/gcc/ada/checks.ads
@@ -161,7 +161,7 @@ package Checks is
procedure Activate_Range_Check (N : Node_Id);
pragma Inline (Activate_Range_Check);
- -- Sets Do_Range_Check flag in node N, and handles possible local raise
+ -- Sets Do_Range_Check flag in node N, and handles possible local raise.
-- Always call this routine rather than calling Set_Do_Range_Check to
-- set an explicit value of True, to ensure handling the local raise case.
diff --git a/gcc/ada/doc/Makefile b/gcc/ada/doc/Makefile
index a2a9d7a..9a435eb 100644
--- a/gcc/ada/doc/Makefile
+++ b/gcc/ada/doc/Makefile
@@ -42,22 +42,26 @@ help:
clean:
-rm -rf $(BUILDDIR)
-%.html:
+.PHONY: mk_empty_dirs
+mk_empty_dirs:
+ mkdir -p share/_static
+
+%.html: mk_empty_dirs
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/$*/html
-%.pdf:
+%.pdf: mk_empty_dirs
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/$*/pdf
$(MAKE) -C $(BUILDDIR)/$*/pdf all-pdf LATEXOPTS="-interaction=nonstopmode"
-%.txt:
+%.txt: mk_empty_dirs
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/$*/txt
$(MAKE) -C $(BUILDDIR)/$*/txt plaintext
-%.info:
+%.info: mk_empty_dirs
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/$*/info
$(MAKE) -C $(BUILDDIR)/$*/info info
-%.texinfo:
+%.texinfo: mk_empty_dirs
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/$*/texinfo
sed -e 's/^@dircategory/@dircategory GNU Ada Tools/g' < $(BUILDDIR)/$*/texinfo/$*.texi > $(BUILDDIR)/../../$*.texi
diff --git a/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst b/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
index a4ff222..625a38f 100644
--- a/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
+++ b/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
@@ -371,6 +371,21 @@ Syntax:
This configuration pragma is a synonym for pragma Ada_12 and has the
same syntax and effect.
+Pragma Aggregate_Individually_Assign
+====================================
+
+Syntax:
+
+.. code-block:: ada
+
+ pragma Aggregate_Individually_Assign;
+
+Where possible, GNAT will store the binary representation of a record aggregate
+in memory for space and performance reasons. This configuration pragma changes
+this behavior so that record aggregates are instead always converted into
+individual assignment statements.
+
+
Pragma Allow_Integer_Address
============================
@@ -3649,6 +3664,24 @@ the implementation of protected operations must be implemented without locks.
Compilation fails if the compiler cannot generate lock-free code for the
operations.
+The current conditions required to support this pragma are:
+
+* Protected type declarations may not contain entries
+* Protected subprogram declarations may not have nonelementary parameters
+
+In addition, each protected subprogram body must satisfy:
+
+* May reference only one protected component
+* May not reference nonconstant entities outside the protected subprogram
+ scope.
+* May not contain address representation items, allocators, or quantified
+ expressions.
+* May not contain delay, goto, loop, or procedure-call statements.
+* May not contain exported and imported entities
+* May not dereferenced access values
+* Function calls and attribute references must be static
+
+
Pragma Loop_Invariant
=====================
@@ -3855,8 +3888,10 @@ Syntax::
This pragma is used to specify the maximum callers per entry queue for
individual protected entries and entry families. It accepts a single
-positive integer as a parameter and must appear after the declaration
-of an entry.
+integer (-1 or more) as a parameter and must appear after the declaration of an
+entry.
+
+A value of -1 represents no additional restriction on queue length.
Pragma No_Body
==============
@@ -7449,18 +7484,21 @@ Syntax:
This configuration pragma allows the programmer to specify a set
-of warnings that will be treated as errors. Any warning which
+of warnings that will be treated as errors. Any warning that
matches the pattern given by the pragma argument will be treated
-as an error. This gives much more precise control that -gnatwe
-which treats all warnings as errors.
-
-The pattern may contain asterisks, which match zero or more characters in
-the message. For example, you can use
-``pragma Warning_As_Error ("bits of*unused")`` to treat the warning
-message ``warning: 960 bits of "a" unused`` as an error. No other regular
-expression notations are permitted. All characters other than asterisk in
-these three specific cases are treated as literal characters in the match.
-The match is case insensitive, for example XYZ matches xyz.
+as an error. This gives more precise control than -gnatwe,
+which treats warnings as errors.
+
+This pragma can apply to regular warnings (messages enabled by -gnatw)
+and to style warnings (messages that start with "(style)",
+enabled by -gnaty).
+
+The pattern may contain asterisks, which match zero or more characters
+in the message. For example, you can use ``pragma Warning_As_Error
+("bits of*unused")`` to treat the warning message ``warning: 960 bits of
+"a" unused`` as an error. All characters other than asterisk are treated
+as literal characters in the match. The match is case insensitive; for
+example XYZ matches xyz.
Note that the pattern matches if it occurs anywhere within the warning
message string (it is not necessary to put an asterisk at the start and
diff --git a/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst b/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
index 913d6b9..6f13452 100644
--- a/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
+++ b/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
@@ -2760,7 +2760,7 @@ of the pragma in the :title:`GNAT_Reference_manual`).
:switch:`-gnatwa`
*Activate most optional warnings.*
- This switch activates most optional warning messages. See the remaining list
+ This switch activates most optional warning messages. See the remaining list
in this section for details on optional warning messages that can be
individually controlled. The warnings that are not turned on by this
switch are:
@@ -2790,6 +2790,8 @@ of the pragma in the :title:`GNAT_Reference_manual`).
* :switch:`-gnatw.q` (questionable layout of record types)
+ * :switch:`-gnatw_r` (out-of-order record representation clauses)
+
* :switch:`-gnatw.s` (overridden size clause)
* :switch:`-gnatwt` (tracking of deleted conditional code)
@@ -3708,7 +3710,7 @@ of the pragma in the :title:`GNAT_Reference_manual`).
warnings are given.
-.. index:: -gnatwT (gcc)
+.. index:: -gnatw.R (gcc)
:switch:`-gnatw.R`
*Suppress warnings for object renaming function.*
@@ -3716,6 +3718,23 @@ of the pragma in the :title:`GNAT_Reference_manual`).
This switch suppresses warnings for object renaming function.
+.. index:: -gnatw_r (gcc)
+
+:switch:`-gnatw_r`
+ *Activate warnings for out-of-order record representation clauses.*
+
+ This switch activates warnings for record representation clauses,
+ if the order of component declarations, component clauses,
+ and bit-level layout do not all agree.
+ The default is that these warnings are not given.
+
+
+.. index:: -gnatw_R (gcc)
+
+:switch:`-gnatw_R`
+ *Suppress warnings for out-of-order record representation clauses.*
+
+
.. index:: -gnatws (gcc)
:switch:`-gnatws`
@@ -4777,7 +4796,7 @@ checks to be performed. The following checks are defined:
The set of style check switches is set to match that used by the GNAT sources.
This may be useful when developing code that is eventually intended to be
- incorporated into GNAT. Currently this is equivalent to :switch:`-gnatwydISux`)
+ incorporated into GNAT. Currently this is equivalent to :switch:`-gnatyydISux`)
but additional style switches may be added to this set in the future without
advance notice.
diff --git a/gcc/ada/einfo.adb b/gcc/ada/einfo.adb
index 957bfe6..ebef3a0 100644
--- a/gcc/ada/einfo.adb
+++ b/gcc/ada/einfo.adb
@@ -8032,10 +8032,8 @@ package body Einfo is
------------------------
function Is_Constant_Object (Id : E) return B is
- K : constant Entity_Kind := Ekind (Id);
begin
- return
- K = E_Constant or else K = E_In_Parameter or else K = E_Loop_Parameter;
+ return Ekind_In (Id, E_Constant, E_In_Parameter, E_Loop_Parameter);
end Is_Constant_Object;
-------------------
@@ -8053,8 +8051,8 @@ package body Einfo is
function Is_Discriminal (Id : E) return B is
begin
- return (Ekind_In (Id, E_Constant, E_In_Parameter)
- and then Present (Discriminal_Link (Id)));
+ return Ekind_In (Id, E_Constant, E_In_Parameter)
+ and then Present (Discriminal_Link (Id));
end Is_Discriminal;
----------------------
@@ -8181,8 +8179,8 @@ package body Einfo is
function Is_Prival (Id : E) return B is
begin
- return (Ekind_In (Id, E_Constant, E_Variable)
- and then Present (Prival_Link (Id)));
+ return Ekind_In (Id, E_Constant, E_Variable)
+ and then Present (Prival_Link (Id));
end Is_Prival;
----------------------------
diff --git a/gcc/ada/einfo.ads b/gcc/ada/einfo.ads
index 089960a..e93a837 100644
--- a/gcc/ada/einfo.ads
+++ b/gcc/ada/einfo.ads
@@ -663,8 +663,8 @@ package Einfo is
-- In that case, this field points to that subtype.
--
-- For E_Class_Wide_Subtype, the presence of Equivalent_Type overrides
--- this field. Note that this field ONLY appears in subtype entries, not
--- in type entries, it is not defined, and it is an error to reference
+-- this field. Note that this field ONLY appears in subtype entities, not
+-- in type entities, it is not defined, and it is an error to reference
-- Cloned_Subtype in an E_Record_Type or E_Class_Wide_Type entity.
-- Comes_From_Source
@@ -915,7 +915,7 @@ package Einfo is
-- depends on a private type.
-- Derived_Type_Link (Node31)
--- Defined in all type and subtype entries. Set in a base type if
+-- Defined in all type and subtype entities. Set in a base type if
-- a derived type declaration is encountered which derives from
-- this base type or one of its subtypes, and there are already
-- primitive operations declared. In this case, it references the
@@ -1228,7 +1228,7 @@ package Einfo is
-- initial value). See Exp_Util.Expand_Class_Wide_Subtype for further
-- details. For E_Exception_Type, this points to the record containing
-- the data necessary to represent exceptions (for further details, see
--- System.Standard_Library. For access_to_protected subprograms, it
+-- System.Standard_Library). For access to protected subprograms, it
-- denotes a record that holds pointers to the operation and to the
-- protected object. For remote Access_To_Subprogram types, it denotes
-- the record that is the fat pointer representation of an RAST.
@@ -1616,7 +1616,7 @@ package Einfo is
-- set, signalling that Freeze.Inherit_Delayed_Rep_Aspects must be called
-- at the freeze point of the derived type.
--- Has_DIC (syntherized)
+-- Has_DIC (synthesized)
-- Defined in all type entities. Set for a private type and its full view
-- when the type is subject to pragma Default_Initial_Condition (DIC), or
-- when the type inherits a DIC pragma from a parent type.
@@ -1952,7 +1952,7 @@ package Einfo is
-- Unmodified and Unreferenced pragmas.
-- Has_Pragma_Unused (Flag294)
--- Defined in all entries. Set if a valid pragma Unused applies to a
+-- Defined in all entities. Set if a valid pragma Unused applies to a
-- variable or entity, indicating that warnings should not be given if
-- it is never modified or referenced. Note: This pragma is exactly
-- equivalent Unmodified and Unreference combined.
@@ -3327,7 +3327,7 @@ package Einfo is
-- frozen. If set it indicates that the representation is known to be
-- unsigned (i.e. that no negative values appear in the range). This is
-- normally just a reflection of the lower bound of the subtype or base
--- type, but there is one case in which the setting is non-obvious,
+-- type, but there is one case in which the setting is not obvious,
-- namely the case of an unsigned subtype of a signed type from which
-- a further subtype is obtained using variable bounds. This further
-- subtype is still unsigned, but this cannot be determined by looking
diff --git a/gcc/ada/errout.adb b/gcc/ada/errout.adb
index f5a4925..42c7cb9 100644
--- a/gcc/ada/errout.adb
+++ b/gcc/ada/errout.adb
@@ -1100,7 +1100,7 @@ package body Errout is
-- Test if warning to be treated as error
Warn_Err :=
- Is_Warning_Msg
+ (Is_Warning_Msg or Is_Style_Msg)
and then (Warning_Treated_As_Error (Msg_Buffer (1 .. Msglen))
or else
Warning_Treated_As_Error (Get_Warning_Tag (Cur_Msg)));
diff --git a/gcc/ada/erroutc.adb b/gcc/ada/erroutc.adb
index 81e2910..3bab352 100644
--- a/gcc/ada/erroutc.adb
+++ b/gcc/ada/erroutc.adb
@@ -624,155 +624,145 @@ package body Erroutc is
Length : Nat;
-- Maximum total length of lines
- Text : constant String_Ptr := Errors.Table (E).Text;
+ E_Msg : Error_Msg_Object renames Errors.Table (E);
+ Text : constant String_Ptr := E_Msg.Text;
Ptr : Natural;
Split : Natural;
Start : Natural;
+ Tag : constant String := Get_Warning_Tag (E);
+ Txt : String_Ptr;
+ Len : Natural;
begin
- declare
- Tag : constant String := Get_Warning_Tag (E);
- Txt : String_Ptr;
- Len : Natural;
+ -- Postfix warning tag to message if needed
- begin
- -- Postfix warning tag to message if needed
-
- if Tag /= "" and then Warning_Doc_Switch then
- if Include_Subprogram_In_Messages then
- Txt :=
- new String'
- (Subprogram_Name_Ptr (Errors.Table (E).Node) &
- ": " & Text.all & ' ' & Tag);
- else
- Txt := new String'(Text.all & ' ' & Tag);
- end if;
-
- elsif Include_Subprogram_In_Messages
- and then (Errors.Table (E).Warn or else Errors.Table (E).Style)
- then
+ if Tag /= "" and then Warning_Doc_Switch then
+ if Include_Subprogram_In_Messages then
Txt :=
new String'
- (Subprogram_Name_Ptr (Errors.Table (E).Node) &
- ": " & Text.all);
+ (Subprogram_Name_Ptr (E_Msg.Node) &
+ ": " & Text.all & ' ' & Tag);
else
- Txt := Text;
+ Txt := new String'(Text.all & ' ' & Tag);
end if;
- -- Deal with warning case
-
- if Errors.Table (E).Warn or else Errors.Table (E).Info then
+ elsif Include_Subprogram_In_Messages
+ and then (E_Msg.Warn or else E_Msg.Style)
+ then
+ Txt :=
+ new String'(Subprogram_Name_Ptr (E_Msg.Node) & ": " & Text.all);
+ else
+ Txt := Text;
+ end if;
- -- For info messages, prefix message with "info: "
+ -- For info messages, prefix message with "info: "
- if Errors.Table (E).Info then
- Txt := new String'("info: " & Txt.all);
+ if E_Msg.Info then
+ Txt := new String'("info: " & Txt.all);
- -- Warning treated as error
+ -- Warning treated as error
- elsif Errors.Table (E).Warn_Err then
+ elsif E_Msg.Warn_Err then
- -- We prefix with "error:" rather than warning: and postfix
- -- [warning-as-error] at the end.
+ -- We prefix with "error:" rather than warning: and postfix
+ -- [warning-as-error] at the end.
- Warnings_Treated_As_Errors := Warnings_Treated_As_Errors + 1;
- Txt := new String'("error: " & Txt.all & " [warning-as-error]");
+ Warnings_Treated_As_Errors := Warnings_Treated_As_Errors + 1;
+ Txt := new String'("error: " & Txt.all & " [warning-as-error]");
- -- Normal case, prefix with "warning: "
+ -- Normal warning, prefix with "warning: "
- else
- Txt := new String'("warning: " & Txt.all);
- end if;
+ elsif E_Msg.Warn then
+ Txt := new String'("warning: " & Txt.all);
- -- No prefix needed for style message, "(style)" is there already
+ -- No prefix needed for style message, "(style)" is there already
- elsif Errors.Table (E).Style then
- null;
+ elsif E_Msg.Style then
+ null;
- -- No prefix needed for check message, severity is there already
+ -- No prefix needed for check message, severity is there already
- elsif Errors.Table (E).Check then
- null;
+ elsif E_Msg.Check then
+ null;
- -- All other cases, add "error: " if unique error tag set
+ -- All other cases, add "error: " if unique error tag set
- elsif Opt.Unique_Error_Tag then
- Txt := new String'("error: " & Txt.all);
- end if;
+ elsif Opt.Unique_Error_Tag then
+ Txt := new String'("error: " & Txt.all);
+ end if;
- -- Set error message line length and length of message
+ -- Set error message line length and length of message
- if Error_Msg_Line_Length = 0 then
- Length := Nat'Last;
- else
- Length := Error_Msg_Line_Length;
- end if;
+ if Error_Msg_Line_Length = 0 then
+ Length := Nat'Last;
+ else
+ Length := Error_Msg_Line_Length;
+ end if;
- Max := Integer (Length - Column + 1);
- Len := Txt'Length;
+ Max := Integer (Length - Column + 1);
+ Len := Txt'Length;
- -- Here we have to split the message up into multiple lines
+ -- Here we have to split the message up into multiple lines
- Ptr := 1;
- loop
- -- Make sure we do not have ludicrously small line
+ Ptr := 1;
+ loop
+ -- Make sure we do not have ludicrously small line
- Max := Integer'Max (Max, 20);
+ Max := Integer'Max (Max, 20);
- -- If remaining text fits, output it respecting LF and we are done
+ -- If remaining text fits, output it respecting LF and we are done
- if Len - Ptr < Max then
- for J in Ptr .. Len loop
- if Txt (J) = ASCII.LF then
- Write_Eol;
- Write_Spaces (Offs);
- else
- Write_Char (Txt (J));
- end if;
- end loop;
+ if Len - Ptr < Max then
+ for J in Ptr .. Len loop
+ if Txt (J) = ASCII.LF then
+ Write_Eol;
+ Write_Spaces (Offs);
+ else
+ Write_Char (Txt (J));
+ end if;
+ end loop;
- return;
+ return;
- -- Line does not fit
+ -- Line does not fit
- else
- Start := Ptr;
+ else
+ Start := Ptr;
- -- First scan forward looking for a hard end of line
+ -- First scan forward looking for a hard end of line
- for Scan in Ptr .. Ptr + Max - 1 loop
- if Txt (Scan) = ASCII.LF then
- Split := Scan - 1;
- Ptr := Scan + 1;
- goto Continue;
- end if;
- end loop;
+ for Scan in Ptr .. Ptr + Max - 1 loop
+ if Txt (Scan) = ASCII.LF then
+ Split := Scan - 1;
+ Ptr := Scan + 1;
+ goto Continue;
+ end if;
+ end loop;
- -- Otherwise scan backwards looking for a space
+ -- Otherwise scan backwards looking for a space
- for Scan in reverse Ptr .. Ptr + Max - 1 loop
- if Txt (Scan) = ' ' then
- Split := Scan - 1;
- Ptr := Scan + 1;
- goto Continue;
- end if;
- end loop;
+ for Scan in reverse Ptr .. Ptr + Max - 1 loop
+ if Txt (Scan) = ' ' then
+ Split := Scan - 1;
+ Ptr := Scan + 1;
+ goto Continue;
+ end if;
+ end loop;
- -- If we fall through, no space, so split line arbitrarily
+ -- If we fall through, no space, so split line arbitrarily
- Split := Ptr + Max - 1;
- Ptr := Split + 1;
- end if;
+ Split := Ptr + Max - 1;
+ Ptr := Split + 1;
+ end if;
- <<Continue>>
- if Start <= Split then
- Write_Line (Txt (Start .. Split));
- Write_Spaces (Offs);
- end if;
+ <<Continue>>
+ if Start <= Split then
+ Write_Line (Txt (Start .. Split));
+ Write_Spaces (Offs);
+ end if;
- Max := Integer (Length - Column + 1);
- end loop;
- end;
+ Max := Integer (Length - Column + 1);
+ end loop;
end Output_Msg_Text;
---------------------
diff --git a/gcc/ada/erroutc.ads b/gcc/ada/erroutc.ads
index ff73fc4..3b34753 100644
--- a/gcc/ada/erroutc.ads
+++ b/gcc/ada/erroutc.ads
@@ -612,7 +612,7 @@ package Erroutc is
function Warning_Treated_As_Error (Msg : String) return Boolean;
-- Returns True if the warning message Msg matches any of the strings
-- given by Warning_As_Error pragmas, as stored in the Warnings_As_Errors
- -- table by Set_Warning_As_Error.
+ -- table.
type Error_Msg_Proc is
access procedure (Msg : String; Flag_Location : Source_Ptr);
diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb
index 6a756fd..7f11b41 100644
--- a/gcc/ada/exp_aggr.adb
+++ b/gcc/ada/exp_aggr.adb
@@ -5233,6 +5233,12 @@ package body Exp_Aggr is
Value : Uint;
begin
+ -- Back end doesn't know about <>
+
+ if Has_Default_Init_Comps (N) then
+ return False;
+ end if;
+
-- Recurse as far as possible to find the innermost component type
Ctyp := Etype (N);
@@ -6292,9 +6298,7 @@ package body Exp_Aggr is
-- previously excluded controlled components but this is an old
-- oversight: the rules in 7.6 (17) are clear.
- if (not Has_Default_Init_Comps (N)
- or else Is_Limited_Type (Etype (N)))
- and then Comes_From_Source (Parent_Node)
+ if Comes_From_Source (Parent_Node)
and then Parent_Kind = N_Object_Declaration
and then Present (Expression (Parent_Node))
and then not
@@ -7478,6 +7482,12 @@ package body Exp_Aggr is
return;
end if;
+ -- If the pramga Aggregate_Individually_Assign is set, always convert to
+ -- assignments.
+
+ if Aggregate_Individually_Assign then
+ Convert_To_Assignments (N, Typ);
+
-- Ada 2005 (AI-318-2): We need to convert to assignments if components
-- are build-in-place function calls. The assignments will each turn
-- into a build-in-place function call. If components are all static,
@@ -7486,7 +7496,7 @@ package body Exp_Aggr is
-- Extension aggregates, aggregates in extended return statements, and
-- aggregates for C++ imported types must be expanded.
- if Ada_Version >= Ada_2005 and then Is_Limited_View (Typ) then
+ elsif Ada_Version >= Ada_2005 and then Is_Limited_View (Typ) then
if not Nkind_In (Parent (N), N_Component_Association,
N_Object_Declaration)
then
diff --git a/gcc/ada/exp_attr.adb b/gcc/ada/exp_attr.adb
index 306c1b5..c7d1647 100644
--- a/gcc/ada/exp_attr.adb
+++ b/gcc/ada/exp_attr.adb
@@ -1436,6 +1436,25 @@ package body Exp_Attr is
Insert_Action (Loop_Stmt, Func_Decl);
Pop_Scope;
+ -- The analysis of the condition may have generated itypes
+ -- that are now used within the function: Adjust their
+ -- scopes accordingly so that their use appears in their
+ -- scope of definition.
+
+ declare
+ Ityp : Entity_Id;
+
+ begin
+ Ityp := First_Entity (Loop_Id);
+
+ while Present (Ityp) loop
+ if Is_Itype (Ityp) then
+ Set_Scope (Ityp, Func_Id);
+ end if;
+ Next_Entity (Ityp);
+ end loop;
+ end;
+
-- Transform the original while loop into an infinite loop
-- where the last statement checks the negated condition. This
-- placement ensures that the condition will not be evaluated
diff --git a/gcc/ada/exp_ch11.adb b/gcc/ada/exp_ch11.adb
index 29d8718..d45cb45 100644
--- a/gcc/ada/exp_ch11.adb
+++ b/gcc/ada/exp_ch11.adb
@@ -63,10 +63,9 @@ package body Exp_Ch11 is
-- N is the node on which the warning is placed.
procedure Warn_If_No_Propagation (N : Node_Id);
- -- Called for an exception raise that is not a local raise (and thus
- -- cannot be optimized to a goto). Issues warning if
- -- No_Exception_Propagation restriction is set.
- -- N is the node for the raise or equivalent call.
+ -- Called for an exception raise that is not a local raise (and thus cannot
+ -- be optimized to a goto). Issues warning if No_Exception_Propagation
+ -- restriction is set. N is the node for the raise or equivalent call.
---------------------------
-- Expand_At_End_Handler --
diff --git a/gcc/ada/exp_ch13.adb b/gcc/ada/exp_ch13.adb
index f3c2c01..f3da4ee 100644
--- a/gcc/ada/exp_ch13.adb
+++ b/gcc/ada/exp_ch13.adb
@@ -220,9 +220,9 @@ package body Exp_Ch13 is
-- task_typeZ := expression
if Ekind (Ent) = E_Task_Type then
+
declare
Assign : Node_Id;
-
begin
Assign :=
Make_Assignment_Statement (Loc,
@@ -261,15 +261,35 @@ package body Exp_Ch13 is
Make_Defining_Identifier (Loc,
Chars => New_External_Name (Chars (Ent), 'V'));
- -- Insert the declaration of the object
-
- Insert_Action (N,
- Make_Object_Declaration (Loc,
- Defining_Identifier => V,
- Object_Definition =>
- New_Occurrence_Of (RTE (RE_Storage_Offset), Loc),
- Expression =>
- Convert_To (RTE (RE_Storage_Offset), Expression (N))));
+ -- Insert the declaration of the object. If the expression
+ -- is not static it may depend on some other type that is
+ -- not frozen yet, so attach the declaration that captures
+ -- the value of the expression to the actions of the freeze
+ -- node of the current type.
+
+ declare
+ Decl : constant Node_Id :=
+ Make_Object_Declaration (Loc,
+ Defining_Identifier => V,
+ Object_Definition =>
+ New_Occurrence_Of (RTE (RE_Storage_Offset), Loc),
+ Expression =>
+ Convert_To
+ (RTE (RE_Storage_Offset), Expression (N)));
+ begin
+ if not Is_OK_Static_Expression (Expression (N))
+ and then Present (Freeze_Node (Ent))
+ then
+ if No (Actions (Freeze_Node (Ent))) then
+ Set_Actions (Freeze_Node (Ent), New_List (Decl));
+ else
+ Append (Decl, Actions (Freeze_Node (Ent)));
+ end if;
+
+ else
+ Insert_Action (N, Decl);
+ end if;
+ end;
Set_Storage_Size_Variable (Ent, Entity_Id (V));
end if;
diff --git a/gcc/ada/exp_ch3.adb b/gcc/ada/exp_ch3.adb
index 1901ea5..8763600 100644
--- a/gcc/ada/exp_ch3.adb
+++ b/gcc/ada/exp_ch3.adb
@@ -5518,7 +5518,14 @@ package body Exp_Ch3 is
-- Note: This code covers access-to-limited-interfaces because they
-- can be used to reference tasks implementing them.
- elsif Is_Limited_Class_Wide_Type (Desig_Typ)
+ -- Suppress the master creation for access types created for entry
+ -- formal parameters (parameter block component types). Seems like
+ -- suppression should be more general for compiler-generated types,
+ -- but testing Comes_From_Source, like the code above does, may be
+ -- too general in this case (affects some test output)???
+
+ elsif not Is_Param_Block_Component_Type (Ptr_Typ)
+ and then Is_Limited_Class_Wide_Type (Desig_Typ)
and then Tasking_Allowed
then
Build_Class_Wide_Master (Ptr_Typ);
diff --git a/gcc/ada/exp_ch3.ads b/gcc/ada/exp_ch3.ads
index 6ae0db7..197c053 100644
--- a/gcc/ada/exp_ch3.ads
+++ b/gcc/ada/exp_ch3.ads
@@ -102,10 +102,10 @@ package Exp_Ch3 is
(Typ : Entity_Id;
N : Node_Id;
Size : Uint := No_Uint) return Node_Id;
- -- Build an expression which represents the required initial value of type
+ -- Build an expression that represents the required initial value of type
-- Typ for which predicate Needs_Simple_Initialization is True. N is a node
- -- whose source location used in the construction of the expression. Size
- -- is utilized as follows:
+ -- whose source location is used in the construction of the expression.
+ -- Size is used as follows:
--
-- * If the size of the object to be initialized it is known, it should
-- be passed to the routine.
@@ -115,7 +115,7 @@ package Exp_Ch3 is
--
-- The object size is needed to prepare a known invalid value for use by
-- Normalize_Scalars. A call to this routine where Typ denotes a scalar
- -- type is only valid when Normalize_Scalars or Initialize_Scalars is
+ -- type is valid only when Normalize_Scalars or Initialize_Scalars is
-- active, or if N is the node for a 'Invalid_Value attribute node.
procedure Init_Secondary_Tags
diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb
index 00f9aae..c288d6a 100644
--- a/gcc/ada/exp_ch4.adb
+++ b/gcc/ada/exp_ch4.adb
@@ -1852,7 +1852,7 @@ package body Exp_Ch4 is
Statements => New_List (Loop_Stm)));
-- If no separate indexes, return loop statement with explicit
- -- iteration scheme on its own
+ -- iteration scheme on its own.
else
Loop_Stm :=
@@ -2014,7 +2014,7 @@ package body Exp_Ch4 is
-- If the array type is distinct from the type of the arguments, it
-- is the full view of a private type. Apply an unchecked conversion
- -- to insure that analysis of the call succeeds.
+ -- to ensure that analysis of the call succeeds.
declare
L, R : Node_Id;
@@ -2757,7 +2757,7 @@ package body Exp_Ch4 is
-- The J'th entry in an expression node that represents the total length
-- of operands 1 through J. It is either an integer literal node, or a
-- reference to a constant entity with the right value, so it is fine
- -- to just do a Copy_Node to get an appropriate copy. The extra zero'th
+ -- to just do a Copy_Node to get an appropriate copy. The extra zeroth
-- entry always is set to zero. The length is of type Artyp.
Low_Bound : Node_Id;
@@ -4254,7 +4254,7 @@ package body Exp_Ch4 is
-- 'Last - First (instead of 'Length) because for large arrays computing
-- 'Last -'First + 1 causes overflow. This is done without using the
-- attribute 'Size_In_Storage_Elements (which malfunctions for large
- -- sizes ???)
+ -- sizes ???).
-------------------------
-- Rewrite_Coextension --
@@ -4333,7 +4333,7 @@ package body Exp_Ch4 is
-- to compute 'Length since for large arrays 'Last -'First + 1
-- causes overflow; therefore we compute 'Last - 'First (which
-- is not the exact number of components but it is valid for
- -- the purpose of this runtime check on 32-bit targets)
+ -- the purpose of this runtime check on 32-bit targets).
else
declare
@@ -4371,7 +4371,7 @@ package body Exp_Ch4 is
(Make_Integer_Literal (Loc, J)))));
-- Handle superflat arrays, i.e. arrays with such bounds
- -- as 4 .. 2, to insure that the result is correct.
+ -- as 4 .. 2, to ensure that the result is correct.
-- Generate:
-- (if X'Last > X'First then X'Last - X'First else 0)
@@ -4421,7 +4421,7 @@ package body Exp_Ch4 is
begin
-- Warn on the presence of an allocator of an anonymous access type when
- -- enabled except when its an object declaration at library level.
+ -- enabled, except when it's an object declaration at library level.
if Warn_On_Anonymous_Allocators
and then Ekind (PtrT) = E_Anonymous_Access_Type
@@ -4643,7 +4643,7 @@ package body Exp_Ch4 is
-- The check on No_Initialization is used here to prevent generating
-- this runtime check twice when the allocator is locally replaced by
- -- the expander by another one.
+ -- the expander with another one.
if Is_Array_Type (Etyp) and then not No_Initialization (N) then
declare
@@ -4683,11 +4683,11 @@ package body Exp_Ch4 is
if Is_Constrained (Siz_Typ)
and then Ekind (Siz_Typ) /= E_String_Literal_Subtype
then
- -- For CCG targets the largest array may have up to 2**31-1
- -- components (i.e. 2 Gigabytes if each array component is
- -- 1-byte). This insures that fat pointer fields do not
+ -- For CCG targets, the largest array may have up to 2**31-1
+ -- components (i.e. 2 gigabytes if each array component is
+ -- one byte). This ensures that fat pointer fields do not
-- overflow, since they are 32-bit integer types, and also
- -- insures that 'Length can be computed at run time.
+ -- ensures that 'Length can be computed at run time.
if Modify_Tree_For_C then
Cond :=
@@ -11310,7 +11310,7 @@ package body Exp_Ch4 is
end if;
-- Nothing to do if expression was rewritten into a float-to-float
- -- conversion, since this kind of conversions is handled elsewhere.
+ -- conversion, since this kind of conversion is handled elsewhere.
if Is_Floating_Point_Type (Etype (Expr))
and then Is_Floating_Point_Type (Target_Type)
diff --git a/gcc/ada/exp_ch5.adb b/gcc/ada/exp_ch5.adb
index 682c855..ba0b793 100644
--- a/gcc/ada/exp_ch5.adb
+++ b/gcc/ada/exp_ch5.adb
@@ -114,6 +114,28 @@ package body Exp_Ch5 is
-- Auxiliary declarations are inserted before node N using the standard
-- Insert_Actions mechanism.
+ function Expand_Assign_Array_Bitfield
+ (N : Node_Id;
+ Larray : Entity_Id;
+ Rarray : Entity_Id;
+ L_Type : Entity_Id;
+ R_Type : Entity_Id;
+ Rev : Boolean) return Node_Id;
+ -- Alternative to Expand_Assign_Array_Loop for packed bitfields. Generates
+ -- a call to the System.Bitfields.Copy_Bitfield, which is more efficient
+ -- than copying component-by-component.
+
+ function Expand_Assign_Array_Loop_Or_Bitfield
+ (N : Node_Id;
+ Larray : Entity_Id;
+ Rarray : Entity_Id;
+ L_Type : Entity_Id;
+ R_Type : Entity_Id;
+ Ndim : Pos;
+ Rev : Boolean) return Node_Id;
+ -- Calls either Expand_Assign_Array_Loop or Expand_Assign_Array_Bitfield as
+ -- appropriate.
+
procedure Expand_Assign_Record (N : Node_Id);
-- N is an assignment of an untagged record value. This routine handles
-- the case where the assignment must be made component by component,
@@ -314,6 +336,10 @@ package body Exp_Ch5 is
Crep : constant Boolean := Change_Of_Representation (N);
+ pragma Assert
+ (Crep
+ or else Is_Bit_Packed_Array (L_Type) = Is_Bit_Packed_Array (R_Type));
+
Larray : Node_Id;
Rarray : Node_Id;
@@ -939,7 +965,7 @@ package body Exp_Ch5 is
else
Rewrite (N,
- Expand_Assign_Array_Loop
+ Expand_Assign_Array_Loop_Or_Bitfield
(N, Larray, Rarray, L_Type, R_Type, Ndim,
Rev => not Forwards_OK (N)));
end if;
@@ -1092,12 +1118,12 @@ package body Exp_Ch5 is
Condition => Condition,
Then_Statements => New_List (
- Expand_Assign_Array_Loop
+ Expand_Assign_Array_Loop_Or_Bitfield
(N, Larray, Rarray, L_Type, R_Type, Ndim,
Rev => False)),
Else_Statements => New_List (
- Expand_Assign_Array_Loop
+ Expand_Assign_Array_Loop_Or_Bitfield
(N, Larray, Rarray, L_Type, R_Type, Ndim,
Rev => True))));
end if;
@@ -1320,6 +1346,134 @@ package body Exp_Ch5 is
return Assign;
end Expand_Assign_Array_Loop;
+ ----------------------------------
+ -- Expand_Assign_Array_Bitfield --
+ ----------------------------------
+
+ function Expand_Assign_Array_Bitfield
+ (N : Node_Id;
+ Larray : Entity_Id;
+ Rarray : Entity_Id;
+ L_Type : Entity_Id;
+ R_Type : Entity_Id;
+ Rev : Boolean) return Node_Id
+ is
+ pragma Assert (not Rev);
+ -- Reverse copying is not yet supported by Copy_Bitfield.
+
+ pragma Assert (not Change_Of_Representation (N));
+ -- This won't work, for example, to copy a packed array to an unpacked
+ -- array.
+
+ Loc : constant Source_Ptr := Sloc (N);
+
+ L_Index_Typ : constant Node_Id := Etype (First_Index (L_Type));
+ R_Index_Typ : constant Node_Id := Etype (First_Index (R_Type));
+ Left_Lo : constant Node_Id := Type_Low_Bound (L_Index_Typ);
+ Right_Lo : constant Node_Id := Type_Low_Bound (R_Index_Typ);
+
+ L_Addr : constant Node_Id :=
+ Make_Attribute_Reference (Loc,
+ Prefix =>
+ Make_Indexed_Component (Loc,
+ Prefix =>
+ Duplicate_Subexpr (Larray, True),
+ Expressions => New_List (New_Copy_Tree (Left_Lo))),
+ Attribute_Name => Name_Address);
+
+ L_Bit : constant Node_Id :=
+ Make_Attribute_Reference (Loc,
+ Prefix =>
+ Make_Indexed_Component (Loc,
+ Prefix =>
+ Duplicate_Subexpr (Larray, True),
+ Expressions => New_List (New_Copy_Tree (Left_Lo))),
+ Attribute_Name => Name_Bit);
+
+ R_Addr : constant Node_Id :=
+ Make_Attribute_Reference (Loc,
+ Prefix =>
+ Make_Indexed_Component (Loc,
+ Prefix =>
+ Duplicate_Subexpr (Rarray, True),
+ Expressions => New_List (New_Copy_Tree (Right_Lo))),
+ Attribute_Name => Name_Address);
+
+ R_Bit : constant Node_Id :=
+ Make_Attribute_Reference (Loc,
+ Prefix =>
+ Make_Indexed_Component (Loc,
+ Prefix =>
+ Duplicate_Subexpr (Rarray, True),
+ Expressions => New_List (New_Copy_Tree (Right_Lo))),
+ Attribute_Name => Name_Bit);
+
+ -- Compute the Size of the bitfield. ???We can't use Size here, because
+ -- it doesn't work properly for slices of packed arrays, so we compute
+ -- the L'Size as L'Length*L'Component_Size.
+ --
+ -- Note that the length check has already been done, so we can use the
+ -- size of either L or R.
+
+ Size : constant Node_Id :=
+ Make_Op_Multiply (Loc,
+ Make_Attribute_Reference (Loc,
+ Prefix =>
+ Duplicate_Subexpr (Name (N), True),
+ Attribute_Name => Name_Length),
+ Make_Attribute_Reference (Loc,
+ Prefix =>
+ Duplicate_Subexpr (Name (N), True),
+ Attribute_Name => Name_Component_Size));
+
+ begin
+ return Make_Procedure_Call_Statement (Loc,
+ Name => New_Occurrence_Of (RTE (RE_Copy_Bitfield), Loc),
+ Parameter_Associations => New_List (
+ R_Addr, R_Bit, L_Addr, L_Bit, Size));
+ end Expand_Assign_Array_Bitfield;
+
+ ------------------------------------------
+ -- Expand_Assign_Array_Loop_Or_Bitfield --
+ ------------------------------------------
+
+ function Expand_Assign_Array_Loop_Or_Bitfield
+ (N : Node_Id;
+ Larray : Entity_Id;
+ Rarray : Entity_Id;
+ L_Type : Entity_Id;
+ R_Type : Entity_Id;
+ Ndim : Pos;
+ Rev : Boolean) return Node_Id
+ is
+ Slices : constant Boolean :=
+ Nkind (Name (N)) = N_Slice or else Nkind (Expression (N)) = N_Slice;
+ begin
+ -- Determine whether Copy_Bitfield is appropriate (will work, and will
+ -- be more efficient than component-by-component copy). Copy_Bitfield
+ -- doesn't work for reversed storage orders. It is efficient only for
+ -- slices of bit-packed arrays.
+
+ -- Note that Expand_Assign_Array_Bitfield is disabled for now
+
+ if False -- ???
+ and then Is_Bit_Packed_Array (L_Type)
+ and then Is_Bit_Packed_Array (R_Type)
+ and then RTE_Available (RE_Copy_Bitfield)
+ and then not Reverse_Storage_Order (L_Type)
+ and then not Reverse_Storage_Order (R_Type)
+ and then Ndim = 1
+ and then not Rev
+ and then Slices
+ then
+ return Expand_Assign_Array_Bitfield
+ (N, Larray, Rarray, L_Type, R_Type, Rev);
+ else
+ return Expand_Assign_Array_Loop
+ (N, Larray, Rarray, L_Type, R_Type, Ndim, Rev);
+ end if;
+ end Expand_Assign_Array_Loop_Or_Bitfield;
+
--------------------------
-- Expand_Assign_Record --
--------------------------
diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb
index c182072..e3109c2 100644
--- a/gcc/ada/exp_ch6.adb
+++ b/gcc/ada/exp_ch6.adb
@@ -5199,7 +5199,7 @@ package body Exp_Ch6 is
end if;
-- When the function's subtype is unconstrained, a run-time
- -- test is needed to determine the form of allocation to use
+ -- test may be needed to decide the form of allocation to use
-- for the return object. The function has an implicit formal
-- parameter indicating this. If the BIP_Alloc_Form formal has
-- the value one, then the caller has passed access to an
@@ -5235,13 +5235,6 @@ package body Exp_Ch6 is
SS_Allocator : Node_Id;
begin
- -- Reuse the itype created for the function's implicit
- -- access formal. This avoids the need to create a new
- -- access type here, plus it allows assigning the access
- -- formal directly without applying a conversion.
-
- -- Ref_Type := Etype (Object_Access);
-
-- Create an access type designating the function's
-- result subtype.
@@ -5572,6 +5565,64 @@ package body Exp_Ch6 is
Obj_Acc_Formal := Alloc_Obj_Id;
end;
+
+ -- When the function's subtype is unconstrained and a run-time
+ -- test is not needed, we nevertheless need to build the return
+ -- using the function's result subtype.
+
+ elsif not Is_Constrained (Underlying_Type (Etype (Func_Id)))
+ then
+ declare
+ Alloc_Obj_Id : Entity_Id;
+ Alloc_Obj_Decl : Node_Id;
+ Ptr_Type_Decl : Node_Id;
+ Ref_Type : Entity_Id;
+
+ begin
+ -- Create an access type designating the function's
+ -- result subtype.
+
+ Ref_Type := Make_Temporary (Loc, 'A');
+
+ Ptr_Type_Decl :=
+ Make_Full_Type_Declaration (Loc,
+ Defining_Identifier => Ref_Type,
+ Type_Definition =>
+ Make_Access_To_Object_Definition (Loc,
+ All_Present => True,
+ Subtype_Indication =>
+ New_Occurrence_Of (Ret_Obj_Typ, Loc)));
+
+ Insert_Before (Ret_Obj_Decl, Ptr_Type_Decl);
+
+ -- Create an access object initialized to the conversion
+ -- of the implicit access value passed in by the caller.
+
+ Alloc_Obj_Id := Make_Temporary (Loc, 'R');
+ Set_Etype (Alloc_Obj_Id, Ref_Type);
+
+ -- See the ??? comment a few lines above about the use of
+ -- an unchecked conversion here.
+
+ Alloc_Obj_Decl :=
+ Make_Object_Declaration (Loc,
+ Defining_Identifier => Alloc_Obj_Id,
+ Object_Definition =>
+ New_Occurrence_Of (Ref_Type, Loc),
+ Expression =>
+ Make_Unchecked_Type_Conversion (Loc,
+ Subtype_Mark =>
+ New_Occurrence_Of (Ref_Type, Loc),
+ Expression =>
+ New_Occurrence_Of (Obj_Acc_Formal, Loc)));
+
+ Insert_Before (Ret_Obj_Decl, Alloc_Obj_Decl);
+
+ -- Remember the local access object for use in the
+ -- dereference of the renaming created below.
+
+ Obj_Acc_Formal := Alloc_Obj_Id;
+ end;
end if;
-- Replace the return object declaration with a renaming of a
@@ -8108,13 +8159,41 @@ package body Exp_Ch6 is
-- since it is already attached on the related finalization master.
-- Here and in related routines, we must examine the full view of the
- -- type, because the view at the point of call may differ from that
- -- that in the function body, and the expansion mechanism depends on
+ -- type, because the view at the point of call may differ from the
+ -- one in the function body, and the expansion mechanism depends on
-- the characteristics of the full view.
- if Is_Constrained (Underlying_Type (Result_Subt))
- and then not Needs_Finalization (Underlying_Type (Result_Subt))
- then
+ if Needs_BIP_Alloc_Form (Function_Id) then
+ Temp_Init := Empty;
+
+ -- Case of a user-defined storage pool. Pass an allocation parameter
+ -- indicating that the function should allocate its result in the
+ -- pool, and pass the pool. Use 'Unrestricted_Access because the
+ -- pool may not be aliased.
+
+ if Present (Associated_Storage_Pool (Acc_Type)) then
+ Alloc_Form := User_Storage_Pool;
+ Pool :=
+ Make_Attribute_Reference (Loc,
+ Prefix =>
+ New_Occurrence_Of
+ (Associated_Storage_Pool (Acc_Type), Loc),
+ Attribute_Name => Name_Unrestricted_Access);
+
+ -- No user-defined pool; pass an allocation parameter indicating that
+ -- the function should allocate its result on the heap.
+
+ else
+ Alloc_Form := Global_Heap;
+ Pool := Make_Null (No_Location);
+ end if;
+
+ -- The caller does not provide the return object in this case, so we
+ -- have to pass null for the object access actual.
+
+ Return_Obj_Actual := Empty;
+
+ else
-- Replace the initialized allocator of form "new T'(Func (...))"
-- with an uninitialized allocator of form "new T", where T is the
-- result subtype of the called function. The call to the function
@@ -8163,35 +8242,6 @@ package body Exp_Ch6 is
-- perform the allocation of the return object, so we pass parameters
-- indicating that.
- else
- Temp_Init := Empty;
-
- -- Case of a user-defined storage pool. Pass an allocation parameter
- -- indicating that the function should allocate its result in the
- -- pool, and pass the pool. Use 'Unrestricted_Access because the
- -- pool may not be aliased.
-
- if Present (Associated_Storage_Pool (Acc_Type)) then
- Alloc_Form := User_Storage_Pool;
- Pool :=
- Make_Attribute_Reference (Loc,
- Prefix =>
- New_Occurrence_Of
- (Associated_Storage_Pool (Acc_Type), Loc),
- Attribute_Name => Name_Unrestricted_Access);
-
- -- No user-defined pool; pass an allocation parameter indicating that
- -- the function should allocate its result on the heap.
-
- else
- Alloc_Form := Global_Heap;
- Pool := Make_Null (No_Location);
- end if;
-
- -- The caller does not provide the return object in this case, so we
- -- have to pass null for the object access actual.
-
- Return_Obj_Actual := Empty;
end if;
-- Declare the temp object
@@ -9279,30 +9329,8 @@ package body Exp_Ch6 is
function Needs_BIP_Alloc_Form (Func_Id : Entity_Id) return Boolean is
pragma Assert (Is_Build_In_Place_Function (Func_Id));
Func_Typ : constant Entity_Id := Underlying_Type (Etype (Func_Id));
-
begin
- -- A build-in-place function needs to know which allocation form to
- -- use when:
- --
- -- 1) The result subtype is unconstrained. In this case, depending on
- -- the context of the call, the object may need to be created in the
- -- secondary stack, the heap, or a user-defined storage pool.
- --
- -- 2) The result subtype is tagged. In this case the function call may
- -- dispatch on result and thus needs to be treated in the same way as
- -- calls to functions with class-wide results, because a callee that
- -- can be dispatched to may have any of various result subtypes, so
- -- if any of the possible callees would require an allocation form to
- -- be passed then they all do.
- --
- -- 3) The result subtype needs finalization actions. In this case, based
- -- on the context of the call, the object may need to be created at
- -- the caller site, in the heap, or in a user-defined storage pool.
-
- return
- not Is_Constrained (Func_Typ)
- or else Is_Tagged_Type (Func_Typ)
- or else Needs_Finalization (Func_Typ);
+ return Requires_Transient_Scope (Func_Typ);
end Needs_BIP_Alloc_Form;
--------------------------------------
diff --git a/gcc/ada/exp_disp.adb b/gcc/ada/exp_disp.adb
index 35fc484..640d205 100644
--- a/gcc/ada/exp_disp.adb
+++ b/gcc/ada/exp_disp.adb
@@ -728,23 +728,25 @@ package body Exp_Disp is
-- corresponding actuals in the call, given that this check is
-- performed outside of the body of the subprogram.
+ -- If the dispatching call appears in the same scope as the
+ -- declaration of the dispatching subprogram (for example in
+ -- the expression of a local expression function), the spec
+ -- has not been analyzed yet, in which case we use the Chars
+ -- field to recognize intended occurrences of the formals.
+
---------------------
-- Replace_Formals --
---------------------
function Replace_Formals (N : Node_Id) return Traverse_Result is
+ A : Node_Id;
+ F : Entity_Id;
begin
- if Is_Entity_Name (N)
- and then Present (Entity (N))
- and then Is_Formal (Entity (N))
- then
- declare
- A : Node_Id;
- F : Entity_Id;
+ if Is_Entity_Name (N) then
+ F := First_Formal (Subp);
+ A := First_Actual (Call_Node);
- begin
- F := First_Formal (Subp);
- A := First_Actual (Call_Node);
+ if Present (Entity (N)) and then Is_Formal (Entity (N)) then
while Present (F) loop
if F = Entity (N) then
Rewrite (N, New_Copy_Tree (A));
@@ -776,7 +778,25 @@ package body Exp_Disp is
Next_Formal (F);
Next_Actual (A);
end loop;
- end;
+
+ -- If the node is not analyzed, recognize occurrences of a
+ -- formal by name, as would be done when resolving the aspect
+ -- expression in the context of the subprogram.
+
+ elsif not Analyzed (N)
+ and then Nkind (N) = N_Identifier
+ and then No (Entity (N))
+ then
+ while Present (F) loop
+ if Chars (N) = Chars (F) then
+ Rewrite (N, New_Copy_Tree (A));
+ return Skip;
+ end if;
+
+ Next_Formal (F);
+ Next_Actual (A);
+ end loop;
+ end if;
end if;
return OK;
diff --git a/gcc/ada/exp_spark.adb b/gcc/ada/exp_spark.adb
index ea1381c..e64babe 100644
--- a/gcc/ada/exp_spark.adb
+++ b/gcc/ada/exp_spark.adb
@@ -59,9 +59,6 @@ package body Exp_SPARK is
procedure Expand_SPARK_N_Freeze_Type (E : Entity_Id);
-- Build the DIC procedure of a type when needed, if not already done
- procedure Expand_SPARK_N_Indexed_Component (N : Node_Id);
- -- Insert explicit dereference if required
-
procedure Expand_SPARK_N_Loop_Statement (N : Node_Id);
-- Perform loop statement-specific expansion
@@ -77,6 +74,9 @@ package body Exp_SPARK is
procedure Expand_SPARK_N_Selected_Component (N : Node_Id);
-- Insert explicit dereference if required
+ procedure Expand_SPARK_N_Slice_Or_Indexed_Component (N : Node_Id);
+ -- Insert explicit dereference if required
+
------------------
-- Expand_SPARK --
------------------
@@ -138,8 +138,10 @@ package body Exp_SPARK is
Expand_SPARK_N_Freeze_Type (Entity (N));
end if;
- when N_Indexed_Component =>
- Expand_SPARK_N_Indexed_Component (N);
+ when N_Indexed_Component
+ | N_Slice
+ =>
+ Expand_SPARK_N_Slice_Or_Indexed_Component (N);
when N_Selected_Component =>
Expand_SPARK_N_Selected_Component (N);
@@ -326,21 +328,6 @@ package body Exp_SPARK is
end if;
end Expand_SPARK_N_Loop_Statement;
- --------------------------------------
- -- Expand_SPARK_N_Indexed_Component --
- --------------------------------------
-
- procedure Expand_SPARK_N_Indexed_Component (N : Node_Id) is
- Pref : constant Node_Id := Prefix (N);
- Typ : constant Entity_Id := Etype (Pref);
-
- begin
- if Is_Access_Type (Typ) then
- Insert_Explicit_Dereference (Pref);
- Analyze_And_Resolve (Pref, Designated_Type (Typ));
- end if;
- end Expand_SPARK_N_Indexed_Component;
-
---------------------------------------
-- Expand_SPARK_N_Object_Declaration --
---------------------------------------
@@ -552,4 +539,19 @@ package body Exp_SPARK is
end if;
end Expand_SPARK_N_Selected_Component;
+ -----------------------------------------------
+ -- Expand_SPARK_N_Slice_Or_Indexed_Component --
+ -----------------------------------------------
+
+ procedure Expand_SPARK_N_Slice_Or_Indexed_Component (N : Node_Id) is
+ Pref : constant Node_Id := Prefix (N);
+ Typ : constant Entity_Id := Etype (Pref);
+
+ begin
+ if Is_Access_Type (Typ) then
+ Insert_Explicit_Dereference (Pref);
+ Analyze_And_Resolve (Pref, Designated_Type (Typ));
+ end if;
+ end Expand_SPARK_N_Slice_Or_Indexed_Component;
+
end Exp_SPARK;
diff --git a/gcc/ada/exp_unst.adb b/gcc/ada/exp_unst.adb
index f146a6f..7cc9a6a4 100644
--- a/gcc/ada/exp_unst.adb
+++ b/gcc/ada/exp_unst.adb
@@ -53,13 +53,17 @@ package body Exp_Unst is
-- Local Subprograms --
-----------------------
- procedure Unnest_Subprogram (Subp : Entity_Id; Subp_Body : Node_Id);
+ procedure Unnest_Subprogram
+ (Subp : Entity_Id; Subp_Body : Node_Id; For_Inline : Boolean := False);
-- Subp is a library-level subprogram which has nested subprograms, and
-- Subp_Body is the corresponding N_Subprogram_Body node. This procedure
-- declares the AREC types and objects, adds assignments to the AREC record
-- as required, defines the xxxPTR types for uplevel referenced objects,
-- adds the ARECP parameter to all nested subprograms which need it, and
- -- modifies all uplevel references appropriately.
+ -- modifies all uplevel references appropriately. If For_Inline is True,
+ -- we're unnesting this subprogram because it's on the list of inlined
+ -- subprograms and should unnest it despite it not being part of the main
+ -- unit.
-----------
-- Calls --
@@ -297,7 +301,8 @@ package body Exp_Unst is
-- Unnest_Subprogram --
-----------------------
- procedure Unnest_Subprogram (Subp : Entity_Id; Subp_Body : Node_Id) is
+ procedure Unnest_Subprogram
+ (Subp : Entity_Id; Subp_Body : Node_Id; For_Inline : Boolean := False) is
function AREC_Name (J : Pos; S : String) return Name_Id;
-- Returns name for string ARECjS, where j is the decimal value of j
@@ -402,15 +407,18 @@ package body Exp_Unst is
-- to determine whether the main unit is generic (the scope stack is not
-- present when this is called on the main unit).
- if Ekind (Cunit_Entity (Main_Unit)) = E_Package_Body
+ if not For_Inline
+ and then Ekind (Cunit_Entity (Main_Unit)) = E_Package_Body
and then Is_Generic_Unit (Spec_Entity (Cunit_Entity (Main_Unit)))
then
return;
- end if;
- -- Only unnest when generating code for the main source unit
+ -- Only unnest when generating code for the main source unit or if we're
+ -- unnesting for inline.
- if not In_Extended_Main_Code_Unit (Subp_Body) then
+ elsif not For_Inline
+ and then not In_Extended_Main_Code_Unit (Subp_Body)
+ then
return;
end if;
@@ -2549,6 +2557,9 @@ package body Exp_Unst is
return OK;
end Search_Subprograms;
+ Subp : Entity_Id;
+ Subp_Body : Node_Id;
+
-- Start of processing for Unnest_Subprograms
begin
@@ -2568,6 +2579,24 @@ package body Exp_Unst is
end if;
Do_Search (N);
+
+ -- Unnest any subprograms passed on the list of inlined subprograms
+
+ Subp := First_Inlined_Subprogram (N);
+
+ while Present (Subp) loop
+ Subp_Body := Parent (Declaration_Node (Subp));
+
+ if Nkind (Subp_Body) = N_Subprogram_Declaration
+ and then Present (Corresponding_Body (Subp_Body))
+ then
+ Subp_Body := Parent (Declaration_Node
+ (Corresponding_Body (Subp_Body)));
+ Unnest_Subprogram (Subp, Subp_Body, For_Inline => True);
+ end if;
+
+ Next_Inlined_Subprogram (Subp);
+ end loop;
end Unnest_Subprograms;
end Exp_Unst;
diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb
index 41708c3..c3c5e79 100644
--- a/gcc/ada/exp_util.adb
+++ b/gcc/ada/exp_util.adb
@@ -1977,6 +1977,7 @@ package body Exp_Util is
Set_Scope (Obj_Id, Proc_Id);
Set_First_Entity (Proc_Id, Obj_Id);
+ Set_Last_Entity (Proc_Id, Obj_Id);
-- Generate:
-- procedure <Work_Typ>DIC (_object : <Work_Typ>);
@@ -4608,7 +4609,7 @@ package body Exp_Util is
begin
pragma Assert (Is_Concurrent_Type (Typ));
- if Ekind (Typ) in Protected_Kind then
+ if Is_Protected_Type (Typ) then
if Has_Entries (Typ)
-- A protected type without entries that covers an interface and
@@ -5346,6 +5347,7 @@ package body Exp_Util is
----------------------
function Finalize_Address (Typ : Entity_Id) return Entity_Id is
+ Btyp : constant Entity_Id := Base_Type (Typ);
Utyp : Entity_Id := Typ;
begin
@@ -5385,12 +5387,12 @@ package body Exp_Util is
-- records do not automatically inherit operations, but maybe they
-- should???)
- if Is_Untagged_Derivation (Typ) then
- if Is_Protected_Type (Typ) then
- Utyp := Corresponding_Record_Type (Root_Type (Base_Type (Typ)));
+ if Is_Untagged_Derivation (Btyp) then
+ if Is_Protected_Type (Btyp) then
+ Utyp := Corresponding_Record_Type (Root_Type (Btyp));
else
- Utyp := Underlying_Type (Root_Type (Base_Type (Typ)));
+ Utyp := Underlying_Type (Root_Type (Btyp));
if Is_Protected_Type (Utyp) then
Utyp := Corresponding_Record_Type (Utyp);
diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb
index 70f4b9d..bb17e42 100644
--- a/gcc/ada/freeze.adb
+++ b/gcc/ada/freeze.adb
@@ -1771,6 +1771,7 @@ package body Freeze is
New_N :=
Make_Object_Declaration (Loc,
Defining_Identifier => Temp,
+ Constant_Present => True,
Object_Definition => New_Occurrence_Of (Typ, Loc),
Expression => Relocate_Node (N));
Insert_Before (Par, New_N);
diff --git a/gcc/ada/gcc-interface/lang.opt b/gcc/ada/gcc-interface/lang.opt
index 4295651..6691136 100644
--- a/gcc/ada/gcc-interface/lang.opt
+++ b/gcc/ada/gcc-interface/lang.opt
@@ -58,7 +58,7 @@ Enable most warning messages.
fdump-scos
Ada RejectNegative Var(flag_dump_scos) Init(0)
-Dump Source Coverage Obligations
+Dump Source Coverage Obligations.
k8
Driver
diff --git a/gcc/ada/gcc-interface/misc.c b/gcc/ada/gcc-interface/misc.c
index d53374e..c5822f6 100644
--- a/gcc/ada/gcc-interface/misc.c
+++ b/gcc/ada/gcc-interface/misc.c
@@ -1136,7 +1136,7 @@ default_pass_by_ref (tree gnu_type)
TYPE_ALIGN (gnu_type)) > 0))
return true;
- if (pass_by_reference (NULL, TYPE_MODE (gnu_type), gnu_type, true))
+ if (pass_by_reference (NULL, function_arg_info (gnu_type, /*named=*/true)))
return true;
if (targetm.calls.return_in_memory (gnu_type, NULL_TREE))
diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi
index be31ed8..d5aa396 100644
--- a/gcc/ada/gnat_rm.texi
+++ b/gcc/ada/gnat_rm.texi
@@ -107,6 +107,7 @@ Implementation Defined Pragmas
* Pragma Ada_2005::
* Pragma Ada_12::
* Pragma Ada_2012::
+* Pragma Aggregate_Individually_Assign::
* Pragma Allow_Integer_Address::
* Pragma Annotate::
* Pragma Assert::
@@ -1184,6 +1185,7 @@ consideration, the use of these pragmas should be minimized.
* Pragma Ada_2005::
* Pragma Ada_12::
* Pragma Ada_2012::
+* Pragma Aggregate_Individually_Assign::
* Pragma Allow_Integer_Address::
* Pragma Annotate::
* Pragma Assert::
@@ -1737,7 +1739,7 @@ extra subprograms marked this way from generating ambiguities in
otherwise legal pre-Ada_2012 programs. The one argument form is
intended for exclusive use in the GNAT run-time library.
-@node Pragma Ada_2012,Pragma Allow_Integer_Address,Pragma Ada_12,Implementation Defined Pragmas
+@node Pragma Ada_2012,Pragma Aggregate_Individually_Assign,Pragma Ada_12,Implementation Defined Pragmas
@anchor{gnat_rm/implementation_defined_pragmas pragma-ada-2012}@anchor{27}
@section Pragma Ada_2012
@@ -1751,8 +1753,24 @@ pragma Ada_2012;
This configuration pragma is a synonym for pragma Ada_12 and has the
same syntax and effect.
-@node Pragma Allow_Integer_Address,Pragma Annotate,Pragma Ada_2012,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-allow-integer-address}@anchor{28}
+@node Pragma Aggregate_Individually_Assign,Pragma Allow_Integer_Address,Pragma Ada_2012,Implementation Defined Pragmas
+@anchor{gnat_rm/implementation_defined_pragmas pragma-aggregate-individually-assign}@anchor{28}
+@section Pragma Aggregate_Individually_Assign
+
+
+Syntax:
+
+@example
+pragma Aggregate_Individually_Assign;
+@end example
+
+Where possible, GNAT will store the binary representation of a record aggregate
+in memory for space and performance reasons. This configuration pragma changes
+this behavior so that record aggregates are instead always converted into
+individual assignment statements.
+
+@node Pragma Allow_Integer_Address,Pragma Annotate,Pragma Aggregate_Individually_Assign,Implementation Defined Pragmas
+@anchor{gnat_rm/implementation_defined_pragmas pragma-allow-integer-address}@anchor{29}
@section Pragma Allow_Integer_Address
@@ -1802,7 +1820,7 @@ rather than rejected to allow common sets of sources to be used
in the two situations.
@node Pragma Annotate,Pragma Assert,Pragma Allow_Integer_Address,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-annotate}@anchor{29}@anchor{gnat_rm/implementation_defined_pragmas id3}@anchor{2a}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-annotate}@anchor{2a}@anchor{gnat_rm/implementation_defined_pragmas id3}@anchor{2b}
@section Pragma Annotate
@@ -1836,7 +1854,7 @@ affect the compilation process in any way. This pragma may be used as
a configuration pragma.
@node Pragma Assert,Pragma Assert_And_Cut,Pragma Annotate,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-assert}@anchor{2b}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-assert}@anchor{2c}
@section Pragma Assert
@@ -1902,7 +1920,7 @@ of Ada, and the DISABLE policy is an implementation-defined
addition.
@node Pragma Assert_And_Cut,Pragma Assertion_Policy,Pragma Assert,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-assert-and-cut}@anchor{2c}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-assert-and-cut}@anchor{2d}
@section Pragma Assert_And_Cut
@@ -1929,7 +1947,7 @@ formal verification. The pragma also serves as useful
documentation.
@node Pragma Assertion_Policy,Pragma Assume,Pragma Assert_And_Cut,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-assertion-policy}@anchor{2d}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-assertion-policy}@anchor{2e}
@section Pragma Assertion_Policy
@@ -2013,7 +2031,7 @@ applies to @code{Assert}, @code{Assert_And_Cut},
@code{Assume}, @code{Loop_Invariant}, and @code{Loop_Variant}.
@node Pragma Assume,Pragma Assume_No_Invalid_Values,Pragma Assertion_Policy,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-assume}@anchor{2e}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-assume}@anchor{2f}
@section Pragma Assume
@@ -2047,7 +2065,7 @@ is met, and documents the need to ensure that it is met by
reference to information outside the program.
@node Pragma Assume_No_Invalid_Values,Pragma Async_Readers,Pragma Assume,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-assume-no-invalid-values}@anchor{2f}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-assume-no-invalid-values}@anchor{30}
@section Pragma Assume_No_Invalid_Values
@@ -2100,7 +2118,7 @@ is erroneous so there are no guarantees that this will always be the
case, and it is recommended that these two options not be used together.
@node Pragma Async_Readers,Pragma Async_Writers,Pragma Assume_No_Invalid_Values,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-async-readers}@anchor{30}@anchor{gnat_rm/implementation_defined_pragmas id4}@anchor{31}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-async-readers}@anchor{31}@anchor{gnat_rm/implementation_defined_pragmas id4}@anchor{32}
@section Pragma Async_Readers
@@ -2114,7 +2132,7 @@ For the semantics of this pragma, see the entry for aspect @code{Async_Readers}
the SPARK 2014 Reference Manual, section 7.1.2.
@node Pragma Async_Writers,Pragma Attribute_Definition,Pragma Async_Readers,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id5}@anchor{32}@anchor{gnat_rm/implementation_defined_pragmas pragma-async-writers}@anchor{33}
+@anchor{gnat_rm/implementation_defined_pragmas id5}@anchor{33}@anchor{gnat_rm/implementation_defined_pragmas pragma-async-writers}@anchor{34}
@section Pragma Async_Writers
@@ -2128,7 +2146,7 @@ For the semantics of this pragma, see the entry for aspect @code{Async_Writers}
the SPARK 2014 Reference Manual, section 7.1.2.
@node Pragma Attribute_Definition,Pragma C_Pass_By_Copy,Pragma Async_Writers,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-attribute-definition}@anchor{34}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-attribute-definition}@anchor{35}
@section Pragma Attribute_Definition
@@ -2154,7 +2172,7 @@ code to be written that takes advantage of some new attribute, while remaining
compilable with earlier compilers.
@node Pragma C_Pass_By_Copy,Pragma Check,Pragma Attribute_Definition,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-c-pass-by-copy}@anchor{35}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-c-pass-by-copy}@anchor{36}
@section Pragma C_Pass_By_Copy
@@ -2198,7 +2216,7 @@ You can also pass records by copy by specifying the convention
passing mechanisms on a parameter by parameter basis.
@node Pragma Check,Pragma Check_Float_Overflow,Pragma C_Pass_By_Copy,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-check}@anchor{36}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-check}@anchor{37}
@section Pragma Check
@@ -2237,7 +2255,7 @@ of these identifiers in @code{Assertion_Policy} and @code{Check_Policy}
pragmas, where they are used to refer to sets of assertions.
@node Pragma Check_Float_Overflow,Pragma Check_Name,Pragma Check,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-check-float-overflow}@anchor{37}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-check-float-overflow}@anchor{38}
@section Pragma Check_Float_Overflow
@@ -2293,7 +2311,7 @@ This mode can also be set by use of the compiler
switch @emph{-gnateF}.
@node Pragma Check_Name,Pragma Check_Policy,Pragma Check_Float_Overflow,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-check-name}@anchor{38}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-check-name}@anchor{39}
@section Pragma Check_Name
@@ -2329,7 +2347,7 @@ Check names introduced by this pragma are subject to control by compiler
switches (in particular -gnatp) in the usual manner.
@node Pragma Check_Policy,Pragma Comment,Pragma Check_Name,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-check-policy}@anchor{39}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-check-policy}@anchor{3a}
@section Pragma Check_Policy
@@ -2409,7 +2427,7 @@ policy setting @code{DISABLE} causes the second argument of a corresponding
@code{Check} pragma to be completely ignored and not analyzed.
@node Pragma Comment,Pragma Common_Object,Pragma Check_Policy,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-comment}@anchor{3a}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-comment}@anchor{3b}
@section Pragma Comment
@@ -2428,7 +2446,7 @@ anywhere in the main source unit), and if more than one pragma
is used, all comments are retained.
@node Pragma Common_Object,Pragma Compile_Time_Error,Pragma Comment,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-common-object}@anchor{3b}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-common-object}@anchor{3c}
@section Pragma Common_Object
@@ -2460,7 +2478,7 @@ indicating that the necessary attribute for implementation of this
pragma is not available.
@node Pragma Compile_Time_Error,Pragma Compile_Time_Warning,Pragma Common_Object,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-compile-time-error}@anchor{3c}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-compile-time-error}@anchor{3d}
@section Pragma Compile_Time_Error
@@ -2487,7 +2505,7 @@ the value given as the second argument. This string value may contain
embedded ASCII.LF characters to break the message into multiple lines.
@node Pragma Compile_Time_Warning,Pragma Compiler_Unit,Pragma Compile_Time_Error,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-compile-time-warning}@anchor{3d}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-compile-time-warning}@anchor{3e}
@section Pragma Compile_Time_Warning
@@ -2510,7 +2528,7 @@ with a first parameter of True is to warn a client about use of a package,
for example that it is not fully implemented.
@node Pragma Compiler_Unit,Pragma Compiler_Unit_Warning,Pragma Compile_Time_Warning,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-compiler-unit}@anchor{3e}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-compiler-unit}@anchor{3f}
@section Pragma Compiler_Unit
@@ -2525,7 +2543,7 @@ retained so that old versions of the GNAT run-time that use this pragma can
be compiled with newer versions of the compiler.
@node Pragma Compiler_Unit_Warning,Pragma Complete_Representation,Pragma Compiler_Unit,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-compiler-unit-warning}@anchor{3f}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-compiler-unit-warning}@anchor{40}
@section Pragma Compiler_Unit_Warning
@@ -2543,7 +2561,7 @@ version of GNAT. For the exact list of restrictions, see the compiler sources
and references to Check_Compiler_Unit.
@node Pragma Complete_Representation,Pragma Complex_Representation,Pragma Compiler_Unit_Warning,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-complete-representation}@anchor{40}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-complete-representation}@anchor{41}
@section Pragma Complete_Representation
@@ -2562,7 +2580,7 @@ complete, and that this invariant is maintained if fields are
added to the record in the future.
@node Pragma Complex_Representation,Pragma Component_Alignment,Pragma Complete_Representation,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-complex-representation}@anchor{41}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-complex-representation}@anchor{42}
@section Pragma Complex_Representation
@@ -2584,7 +2602,7 @@ records by pointer, and the use of this pragma may result in passing
this type in floating-point registers.
@node Pragma Component_Alignment,Pragma Constant_After_Elaboration,Pragma Complex_Representation,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-component-alignment}@anchor{42}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-component-alignment}@anchor{43}
@section Pragma Component_Alignment
@@ -2675,7 +2693,7 @@ pragma @code{Pack}, pragma @code{Component_Alignment}, or a record rep
clause), the GNAT uses the default alignment as described previously.
@node Pragma Constant_After_Elaboration,Pragma Contract_Cases,Pragma Component_Alignment,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id6}@anchor{43}@anchor{gnat_rm/implementation_defined_pragmas pragma-constant-after-elaboration}@anchor{44}
+@anchor{gnat_rm/implementation_defined_pragmas id6}@anchor{44}@anchor{gnat_rm/implementation_defined_pragmas pragma-constant-after-elaboration}@anchor{45}
@section Pragma Constant_After_Elaboration
@@ -2689,7 +2707,7 @@ For the semantics of this pragma, see the entry for aspect
@code{Constant_After_Elaboration} in the SPARK 2014 Reference Manual, section 3.3.1.
@node Pragma Contract_Cases,Pragma Convention_Identifier,Pragma Constant_After_Elaboration,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id7}@anchor{45}@anchor{gnat_rm/implementation_defined_pragmas pragma-contract-cases}@anchor{46}
+@anchor{gnat_rm/implementation_defined_pragmas id7}@anchor{46}@anchor{gnat_rm/implementation_defined_pragmas pragma-contract-cases}@anchor{47}
@section Pragma Contract_Cases
@@ -2774,7 +2792,7 @@ and that the consequence for this case should hold when the subprogram
returns.
@node Pragma Convention_Identifier,Pragma CPP_Class,Pragma Contract_Cases,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-convention-identifier}@anchor{47}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-convention-identifier}@anchor{48}
@section Pragma Convention_Identifier
@@ -2810,7 +2828,7 @@ define a convention identifier @code{Library} and use a single
would be used system-wide.
@node Pragma CPP_Class,Pragma CPP_Constructor,Pragma Convention_Identifier,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-class}@anchor{48}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-class}@anchor{49}
@section Pragma CPP_Class
@@ -2835,14 +2853,14 @@ functions (see pragma @code{CPP_Constructor}). Such types are implicitly
limited if not explicitly declared as limited or derived from a limited
type, and an error is issued in that case.
-See @ref{49,,Interfacing to C++} for related information.
+See @ref{4a,,Interfacing to C++} for related information.
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}.
@node Pragma CPP_Constructor,Pragma CPP_Virtual,Pragma CPP_Class,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-constructor}@anchor{4a}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-constructor}@anchor{4b}
@section Pragma CPP_Constructor
@@ -2893,7 +2911,7 @@ on the Ada side and the type is implicitly declared abstract.
Pragma @code{CPP_Constructor} is intended primarily for automatic generation
using an automatic binding generator tool (such as the @code{-fdump-ada-spec}
GCC switch).
-See @ref{49,,Interfacing to C++} for more related information.
+See @ref{4a,,Interfacing to C++} for more related information.
Note: The use of functions returning class-wide types for constructors is
currently obsolete. They are supported for backward compatibility. The
@@ -2902,7 +2920,7 @@ because the imported C++ constructors always return an object of type T;
that is, they never return an object whose type is a descendant of type T.
@node Pragma CPP_Virtual,Pragma CPP_Vtable,Pragma CPP_Constructor,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-virtual}@anchor{4b}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-virtual}@anchor{4c}
@section Pragma CPP_Virtual
@@ -2915,10 +2933,10 @@ purposes. It used to be required to ensure compoatibility with C++, but
is no longer required for that purpose because GNAT generates
the same object layout as the G++ compiler by default.
-See @ref{49,,Interfacing to C++} for related information.
+See @ref{4a,,Interfacing to C++} for related information.
@node Pragma CPP_Vtable,Pragma CPU,Pragma CPP_Virtual,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-vtable}@anchor{4c}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-vtable}@anchor{4d}
@section Pragma CPP_Vtable
@@ -2930,10 +2948,10 @@ It used to be required to ensure compatibility with C++, but
is no longer required for that purpose because GNAT generates
the same object layout as the G++ compiler by default.
-See @ref{49,,Interfacing to C++} for related information.
+See @ref{4a,,Interfacing to C++} for related information.
@node Pragma CPU,Pragma Deadline_Floor,Pragma CPP_Vtable,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-cpu}@anchor{4d}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-cpu}@anchor{4e}
@section Pragma CPU
@@ -2948,7 +2966,7 @@ versions of Ada as an implementation-defined pragma.
See Ada 2012 Reference Manual for details.
@node Pragma Deadline_Floor,Pragma Default_Initial_Condition,Pragma CPU,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-deadline-floor}@anchor{4e}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-deadline-floor}@anchor{4f}
@section Pragma Deadline_Floor
@@ -2963,7 +2981,7 @@ deadline inherited by a task when the task enters a protected object.
It is effective only when the EDF scheduling policy is used.
@node Pragma Default_Initial_Condition,Pragma Debug,Pragma Deadline_Floor,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id8}@anchor{4f}@anchor{gnat_rm/implementation_defined_pragmas pragma-default-initial-condition}@anchor{50}
+@anchor{gnat_rm/implementation_defined_pragmas id8}@anchor{50}@anchor{gnat_rm/implementation_defined_pragmas pragma-default-initial-condition}@anchor{51}
@section Pragma Default_Initial_Condition
@@ -2977,7 +2995,7 @@ For the semantics of this pragma, see the entry for aspect
@code{Default_Initial_Condition} in the SPARK 2014 Reference Manual, section 7.3.3.
@node Pragma Debug,Pragma Debug_Policy,Pragma Default_Initial_Condition,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-debug}@anchor{51}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-debug}@anchor{52}
@section Pragma Debug
@@ -3005,7 +3023,7 @@ or by use of the pragma @code{Check_Policy} with a first argument of
@code{Debug}.
@node Pragma Debug_Policy,Pragma Default_Scalar_Storage_Order,Pragma Debug,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-debug-policy}@anchor{52}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-debug-policy}@anchor{53}
@section Pragma Debug_Policy
@@ -3020,7 +3038,7 @@ with a first argument of @code{Debug}. It is retained for historical
compatibility reasons.
@node Pragma Default_Scalar_Storage_Order,Pragma Default_Storage_Pool,Pragma Debug_Policy,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-default-scalar-storage-order}@anchor{53}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-default-scalar-storage-order}@anchor{54}
@section Pragma Default_Scalar_Storage_Order
@@ -3093,7 +3111,7 @@ it may significantly degrade the run-time performance of the software, instead
the default scalar storage order ought to be changed only on a local basis.
@node Pragma Default_Storage_Pool,Pragma Depends,Pragma Default_Scalar_Storage_Order,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-default-storage-pool}@anchor{54}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-default-storage-pool}@anchor{55}
@section Pragma Default_Storage_Pool
@@ -3110,7 +3128,7 @@ versions of Ada as an implementation-defined pragma.
See Ada 2012 Reference Manual for details.
@node Pragma Depends,Pragma Detect_Blocking,Pragma Default_Storage_Pool,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-depends}@anchor{55}@anchor{gnat_rm/implementation_defined_pragmas id9}@anchor{56}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-depends}@anchor{56}@anchor{gnat_rm/implementation_defined_pragmas id9}@anchor{57}
@section Pragma Depends
@@ -3143,7 +3161,7 @@ For the semantics of this pragma, see the entry for aspect @code{Depends} in the
SPARK 2014 Reference Manual, section 6.1.5.
@node Pragma Detect_Blocking,Pragma Disable_Atomic_Synchronization,Pragma Depends,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-detect-blocking}@anchor{57}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-detect-blocking}@anchor{58}
@section Pragma Detect_Blocking
@@ -3161,7 +3179,7 @@ blocking operations within a protected operation, and to raise Program_Error
if that happens.
@node Pragma Disable_Atomic_Synchronization,Pragma Dispatching_Domain,Pragma Detect_Blocking,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-disable-atomic-synchronization}@anchor{58}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-disable-atomic-synchronization}@anchor{59}
@section Pragma Disable_Atomic_Synchronization
@@ -3187,7 +3205,7 @@ till the end of the scope. If an @code{Entity} argument is present,
the action applies only to that entity.
@node Pragma Dispatching_Domain,Pragma Effective_Reads,Pragma Disable_Atomic_Synchronization,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-dispatching-domain}@anchor{59}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-dispatching-domain}@anchor{5a}
@section Pragma Dispatching_Domain
@@ -3202,7 +3220,7 @@ versions of Ada as an implementation-defined pragma.
See Ada 2012 Reference Manual for details.
@node Pragma Effective_Reads,Pragma Effective_Writes,Pragma Dispatching_Domain,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id10}@anchor{5a}@anchor{gnat_rm/implementation_defined_pragmas pragma-effective-reads}@anchor{5b}
+@anchor{gnat_rm/implementation_defined_pragmas id10}@anchor{5b}@anchor{gnat_rm/implementation_defined_pragmas pragma-effective-reads}@anchor{5c}
@section Pragma Effective_Reads
@@ -3216,7 +3234,7 @@ For the semantics of this pragma, see the entry for aspect @code{Effective_Reads
the SPARK 2014 Reference Manual, section 7.1.2.
@node Pragma Effective_Writes,Pragma Elaboration_Checks,Pragma Effective_Reads,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id11}@anchor{5c}@anchor{gnat_rm/implementation_defined_pragmas pragma-effective-writes}@anchor{5d}
+@anchor{gnat_rm/implementation_defined_pragmas id11}@anchor{5d}@anchor{gnat_rm/implementation_defined_pragmas pragma-effective-writes}@anchor{5e}
@section Pragma Effective_Writes
@@ -3230,7 +3248,7 @@ For the semantics of this pragma, see the entry for aspect @code{Effective_Write
in the SPARK 2014 Reference Manual, section 7.1.2.
@node Pragma Elaboration_Checks,Pragma Eliminate,Pragma Effective_Writes,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-elaboration-checks}@anchor{5e}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-elaboration-checks}@anchor{5f}
@section Pragma Elaboration_Checks
@@ -3267,7 +3285,7 @@ effect. If the pragma argument is @code{Static}, then the static elaboration mod
is in effect.
@node Pragma Eliminate,Pragma Enable_Atomic_Synchronization,Pragma Elaboration_Checks,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-eliminate}@anchor{5f}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-eliminate}@anchor{60}
@section Pragma Eliminate
@@ -3427,7 +3445,7 @@ pragma Eliminate (Q, Proc,
@end quotation
@node Pragma Enable_Atomic_Synchronization,Pragma Export_Function,Pragma Eliminate,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-enable-atomic-synchronization}@anchor{60}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-enable-atomic-synchronization}@anchor{61}
@section Pragma Enable_Atomic_Synchronization
@@ -3455,7 +3473,7 @@ till the end of the scope. If an @code{Entity} argument is present,
the action applies only to that entity.
@node Pragma Export_Function,Pragma Export_Object,Pragma Enable_Atomic_Synchronization,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-export-function}@anchor{61}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-export-function}@anchor{62}
@section Pragma Export_Function
@@ -3527,7 +3545,7 @@ string. In this case, no external name is generated. This form
still allows the specification of parameter mechanisms.
@node Pragma Export_Object,Pragma Export_Procedure,Pragma Export_Function,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-export-object}@anchor{62}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-export-object}@anchor{63}
@section Pragma Export_Object
@@ -3552,7 +3570,7 @@ of portability), but it is not required. @code{Size} is syntax checked,
but otherwise ignored by GNAT.
@node Pragma Export_Procedure,Pragma Export_Value,Pragma Export_Object,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-export-procedure}@anchor{63}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-export-procedure}@anchor{64}
@section Pragma Export_Procedure
@@ -3605,7 +3623,7 @@ string. In this case, no external name is generated. This form
still allows the specification of parameter mechanisms.
@node Pragma Export_Value,Pragma Export_Valued_Procedure,Pragma Export_Procedure,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-export-value}@anchor{64}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-export-value}@anchor{65}
@section Pragma Export_Value
@@ -3626,7 +3644,7 @@ the application. This pragma is currently supported only for the
AAMP target and is ignored for other targets.
@node Pragma Export_Valued_Procedure,Pragma Extend_System,Pragma Export_Value,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-export-valued-procedure}@anchor{65}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-export-valued-procedure}@anchor{66}
@section Pragma Export_Valued_Procedure
@@ -3684,7 +3702,7 @@ string. In this case, no external name is generated. This form
still allows the specification of parameter mechanisms.
@node Pragma Extend_System,Pragma Extensions_Allowed,Pragma Export_Valued_Procedure,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-extend-system}@anchor{66}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-extend-system}@anchor{67}
@section Pragma Extend_System
@@ -3735,7 +3753,7 @@ for compiling System units, as explained in the
GNAT User's Guide.
@node Pragma Extensions_Allowed,Pragma Extensions_Visible,Pragma Extend_System,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-extensions-allowed}@anchor{67}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-extensions-allowed}@anchor{68}
@section Pragma Extensions_Allowed
@@ -3768,7 +3786,7 @@ is constrained.
@end table
@node Pragma Extensions_Visible,Pragma External,Pragma Extensions_Allowed,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id12}@anchor{68}@anchor{gnat_rm/implementation_defined_pragmas pragma-extensions-visible}@anchor{69}
+@anchor{gnat_rm/implementation_defined_pragmas id12}@anchor{69}@anchor{gnat_rm/implementation_defined_pragmas pragma-extensions-visible}@anchor{6a}
@section Pragma Extensions_Visible
@@ -3782,7 +3800,7 @@ For the semantics of this pragma, see the entry for aspect @code{Extensions_Visi
in the SPARK 2014 Reference Manual, section 6.1.7.
@node Pragma External,Pragma External_Name_Casing,Pragma Extensions_Visible,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-external}@anchor{6a}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-external}@anchor{6b}
@section Pragma External
@@ -3803,7 +3821,7 @@ used this pragma for exactly the same purposes as pragma
@code{Export} before the latter was standardized.
@node Pragma External_Name_Casing,Pragma Fast_Math,Pragma External,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-external-name-casing}@anchor{6b}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-external-name-casing}@anchor{6c}
@section Pragma External_Name_Casing
@@ -3892,7 +3910,7 @@ pragma External_Name_Casing (Uppercase, Uppercase);
to enforce the upper casing of all external symbols.
@node Pragma Fast_Math,Pragma Favor_Top_Level,Pragma External_Name_Casing,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-fast-math}@anchor{6c}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-fast-math}@anchor{6d}
@section Pragma Fast_Math
@@ -3921,7 +3939,7 @@ under control of the pragma, rather than use the preinstantiated versions.
@end table
@node Pragma Favor_Top_Level,Pragma Finalize_Storage_Only,Pragma Fast_Math,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id13}@anchor{6d}@anchor{gnat_rm/implementation_defined_pragmas pragma-favor-top-level}@anchor{6e}
+@anchor{gnat_rm/implementation_defined_pragmas id13}@anchor{6e}@anchor{gnat_rm/implementation_defined_pragmas pragma-favor-top-level}@anchor{6f}
@section Pragma Favor_Top_Level
@@ -3940,7 +3958,7 @@ When this pragma is used, dynamically generated trampolines may be used on some
targets for nested subprograms. See restriction @code{No_Implicit_Dynamic_Code}.
@node Pragma Finalize_Storage_Only,Pragma Float_Representation,Pragma Favor_Top_Level,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-finalize-storage-only}@anchor{6f}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-finalize-storage-only}@anchor{70}
@section Pragma Finalize_Storage_Only
@@ -3960,7 +3978,7 @@ name. Note that this pragma does not suppress Finalize calls for library-level
heap-allocated objects (see pragma @code{No_Heap_Finalization}).
@node Pragma Float_Representation,Pragma Ghost,Pragma Finalize_Storage_Only,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-float-representation}@anchor{70}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-float-representation}@anchor{71}
@section Pragma Float_Representation
@@ -3995,7 +4013,7 @@ No other value of digits is permitted.
@end itemize
@node Pragma Ghost,Pragma Global,Pragma Float_Representation,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-ghost}@anchor{71}@anchor{gnat_rm/implementation_defined_pragmas id14}@anchor{72}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-ghost}@anchor{72}@anchor{gnat_rm/implementation_defined_pragmas id14}@anchor{73}
@section Pragma Ghost
@@ -4009,7 +4027,7 @@ For the semantics of this pragma, see the entry for aspect @code{Ghost} in the S
2014 Reference Manual, section 6.9.
@node Pragma Global,Pragma Ident,Pragma Ghost,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-global}@anchor{73}@anchor{gnat_rm/implementation_defined_pragmas id15}@anchor{74}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-global}@anchor{74}@anchor{gnat_rm/implementation_defined_pragmas id15}@anchor{75}
@section Pragma Global
@@ -4034,7 +4052,7 @@ For the semantics of this pragma, see the entry for aspect @code{Global} in the
SPARK 2014 Reference Manual, section 6.1.4.
@node Pragma Ident,Pragma Ignore_Pragma,Pragma Global,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-ident}@anchor{75}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-ident}@anchor{76}
@section Pragma Ident
@@ -4048,7 +4066,7 @@ This pragma is identical in effect to pragma @code{Comment}. It is provided
for compatibility with other Ada compilers providing this pragma.
@node Pragma Ignore_Pragma,Pragma Implementation_Defined,Pragma Ident,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-ignore-pragma}@anchor{76}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-ignore-pragma}@anchor{77}
@section Pragma Ignore_Pragma
@@ -4068,7 +4086,7 @@ pragma allows such pragmas to be ignored, which may be useful in CodePeer
mode, or during porting of legacy code.
@node Pragma Implementation_Defined,Pragma Implemented,Pragma Ignore_Pragma,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-implementation-defined}@anchor{77}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-implementation-defined}@anchor{78}
@section Pragma Implementation_Defined
@@ -4095,7 +4113,7 @@ for the purpose of implementing the No_Implementation_Identifiers
restriction.
@node Pragma Implemented,Pragma Implicit_Packing,Pragma Implementation_Defined,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-implemented}@anchor{78}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-implemented}@anchor{79}
@section Pragma Implemented
@@ -4141,7 +4159,7 @@ By_Any shares the behavior of By_Entry and By_Protected_Procedure depending on
the target's overriding subprogram kind.
@node Pragma Implicit_Packing,Pragma Import_Function,Pragma Implemented,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-implicit-packing}@anchor{79}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-implicit-packing}@anchor{7a}
@section Pragma Implicit_Packing
@@ -4195,7 +4213,7 @@ sufficient. The use of pragma Implicit_Packing allows this record
declaration to compile without an explicit pragma Pack.
@node Pragma Import_Function,Pragma Import_Object,Pragma Implicit_Packing,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-import-function}@anchor{7a}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-import-function}@anchor{7b}
@section Pragma Import_Function
@@ -4260,7 +4278,7 @@ notation. If the mechanism is not specified, the default mechanism
is used.
@node Pragma Import_Object,Pragma Import_Procedure,Pragma Import_Function,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-import-object}@anchor{7b}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-import-object}@anchor{7c}
@section Pragma Import_Object
@@ -4286,7 +4304,7 @@ point of view). @code{size} is syntax checked, but otherwise ignored by
GNAT.
@node Pragma Import_Procedure,Pragma Import_Valued_Procedure,Pragma Import_Object,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-import-procedure}@anchor{7c}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-import-procedure}@anchor{7d}
@section Pragma Import_Procedure
@@ -4326,7 +4344,7 @@ applies to a procedure rather than a function and the parameters
@code{Result_Type} and @code{Result_Mechanism} are not permitted.
@node Pragma Import_Valued_Procedure,Pragma Independent,Pragma Import_Procedure,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-import-valued-procedure}@anchor{7d}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-import-valued-procedure}@anchor{7e}
@section Pragma Import_Valued_Procedure
@@ -4379,7 +4397,7 @@ pragma Import that specifies the desired convention, since otherwise the
default convention is Ada, which is almost certainly not what is required.
@node Pragma Independent,Pragma Independent_Components,Pragma Import_Valued_Procedure,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-independent}@anchor{7e}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-independent}@anchor{7f}
@section Pragma Independent
@@ -4401,7 +4419,7 @@ constraints on the representation of the object (for instance prohibiting
tight packing).
@node Pragma Independent_Components,Pragma Initial_Condition,Pragma Independent,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-independent-components}@anchor{7f}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-independent-components}@anchor{80}
@section Pragma Independent_Components
@@ -4422,7 +4440,7 @@ constraints on the representation of the object (for instance prohibiting
tight packing).
@node Pragma Initial_Condition,Pragma Initialize_Scalars,Pragma Independent_Components,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id16}@anchor{80}@anchor{gnat_rm/implementation_defined_pragmas pragma-initial-condition}@anchor{81}
+@anchor{gnat_rm/implementation_defined_pragmas id16}@anchor{81}@anchor{gnat_rm/implementation_defined_pragmas pragma-initial-condition}@anchor{82}
@section Pragma Initial_Condition
@@ -4436,7 +4454,7 @@ For the semantics of this pragma, see the entry for aspect @code{Initial_Conditi
in the SPARK 2014 Reference Manual, section 7.1.6.
@node Pragma Initialize_Scalars,Pragma Initializes,Pragma Initial_Condition,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-initialize-scalars}@anchor{82}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-initialize-scalars}@anchor{83}
@section Pragma Initialize_Scalars
@@ -4543,7 +4561,7 @@ good idea to turn on stack checking (see description of stack checking in the
GNAT User's Guide) when using this pragma.
@node Pragma Initializes,Pragma Inline_Always,Pragma Initialize_Scalars,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-initializes}@anchor{83}@anchor{gnat_rm/implementation_defined_pragmas id17}@anchor{84}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-initializes}@anchor{84}@anchor{gnat_rm/implementation_defined_pragmas id17}@anchor{85}
@section Pragma Initializes
@@ -4570,7 +4588,7 @@ For the semantics of this pragma, see the entry for aspect @code{Initializes} in
SPARK 2014 Reference Manual, section 7.1.5.
@node Pragma Inline_Always,Pragma Inline_Generic,Pragma Initializes,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id18}@anchor{85}@anchor{gnat_rm/implementation_defined_pragmas pragma-inline-always}@anchor{86}
+@anchor{gnat_rm/implementation_defined_pragmas id18}@anchor{86}@anchor{gnat_rm/implementation_defined_pragmas pragma-inline-always}@anchor{87}
@section Pragma Inline_Always
@@ -4589,7 +4607,7 @@ apply this pragma to a primitive operation of a tagged type. Thanks to such
restrictions, the compiler is allowed to remove the out-of-line body of @code{NAME}.
@node Pragma Inline_Generic,Pragma Interface,Pragma Inline_Always,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-inline-generic}@anchor{87}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-inline-generic}@anchor{88}
@section Pragma Inline_Generic
@@ -4607,7 +4625,7 @@ than to check that the given names are all names of generic units or
generic instances.
@node Pragma Interface,Pragma Interface_Name,Pragma Inline_Generic,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-interface}@anchor{88}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-interface}@anchor{89}
@section Pragma Interface
@@ -4634,7 +4652,7 @@ maintaining Ada 83/Ada 95 compatibility and is compatible with other
Ada 83 compilers.
@node Pragma Interface_Name,Pragma Interrupt_Handler,Pragma Interface,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-interface-name}@anchor{89}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-interface-name}@anchor{8a}
@section Pragma Interface_Name
@@ -4653,7 +4671,7 @@ for an interfaced subprogram, and is provided for compatibility with Ada
least one of @code{External_Name} or @code{Link_Name}.
@node Pragma Interrupt_Handler,Pragma Interrupt_State,Pragma Interface_Name,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-interrupt-handler}@anchor{8a}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-interrupt-handler}@anchor{8b}
@section Pragma Interrupt_Handler
@@ -4673,7 +4691,7 @@ when this pragma is applied to a nonprotected procedure, the instruction
maskable interrupts, in place of the normal return instruction.
@node Pragma Interrupt_State,Pragma Invariant,Pragma Interrupt_Handler,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-interrupt-state}@anchor{8b}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-interrupt-state}@anchor{8c}
@section Pragma Interrupt_State
@@ -4759,7 +4777,7 @@ with an application's runtime behavior in the cases of the synchronous signals,
and in the case of the signal used to implement the @code{abort} statement.
@node Pragma Invariant,Pragma Keep_Names,Pragma Interrupt_State,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id19}@anchor{8c}@anchor{gnat_rm/implementation_defined_pragmas pragma-invariant}@anchor{8d}
+@anchor{gnat_rm/implementation_defined_pragmas id19}@anchor{8d}@anchor{gnat_rm/implementation_defined_pragmas pragma-invariant}@anchor{8e}
@section Pragma Invariant
@@ -4798,7 +4816,7 @@ For further details on the use of this pragma, see the Ada 2012 documentation
of the Type_Invariant aspect.
@node Pragma Keep_Names,Pragma License,Pragma Invariant,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-keep-names}@anchor{8e}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-keep-names}@anchor{8f}
@section Pragma Keep_Names
@@ -4818,7 +4836,7 @@ use a @code{Discard_Names} pragma in the @code{gnat.adc} file, but you
want to retain the names for specific enumeration types.
@node Pragma License,Pragma Link_With,Pragma Keep_Names,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-license}@anchor{8f}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-license}@anchor{90}
@section Pragma License
@@ -4913,7 +4931,7 @@ GPL, but no warning for @code{GNAT.Sockets} which is part of the GNAT
run time, and is therefore licensed under the modified GPL.
@node Pragma Link_With,Pragma Linker_Alias,Pragma License,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-link-with}@anchor{90}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-link-with}@anchor{91}
@section Pragma Link_With
@@ -4937,7 +4955,7 @@ separate arguments to the linker. In addition pragma Link_With allows
multiple arguments, with the same effect as successive pragmas.
@node Pragma Linker_Alias,Pragma Linker_Constructor,Pragma Link_With,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-alias}@anchor{91}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-alias}@anchor{92}
@section Pragma Linker_Alias
@@ -4978,7 +4996,7 @@ end p;
@end example
@node Pragma Linker_Constructor,Pragma Linker_Destructor,Pragma Linker_Alias,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-constructor}@anchor{92}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-constructor}@anchor{93}
@section Pragma Linker_Constructor
@@ -5008,7 +5026,7 @@ listed above. Where possible, the use of Stand Alone Libraries is preferable
to the use of this pragma.
@node Pragma Linker_Destructor,Pragma Linker_Section,Pragma Linker_Constructor,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-destructor}@anchor{93}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-destructor}@anchor{94}
@section Pragma Linker_Destructor
@@ -5031,7 +5049,7 @@ See @code{pragma Linker_Constructor} for the set of restrictions that apply
because of these specific contexts.
@node Pragma Linker_Section,Pragma Lock_Free,Pragma Linker_Destructor,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id20}@anchor{94}@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-section}@anchor{95}
+@anchor{gnat_rm/implementation_defined_pragmas id20}@anchor{95}@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-section}@anchor{96}
@section Pragma Linker_Section
@@ -5105,7 +5123,7 @@ end IO_Card;
@end example
@node Pragma Lock_Free,Pragma Loop_Invariant,Pragma Linker_Section,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id21}@anchor{96}@anchor{gnat_rm/implementation_defined_pragmas pragma-lock-free}@anchor{97}
+@anchor{gnat_rm/implementation_defined_pragmas id21}@anchor{97}@anchor{gnat_rm/implementation_defined_pragmas pragma-lock-free}@anchor{98}
@section Pragma Lock_Free
@@ -5115,8 +5133,49 @@ the implementation of protected operations must be implemented without locks.
Compilation fails if the compiler cannot generate lock-free code for the
operations.
+The current conditions required to support this pragma are:
+
+
+@itemize *
+
+@item
+Protected type declarations may not contain entries
+
+@item
+Protected subprogram declarations may not have nonelementary parameters
+@end itemize
+
+In addition, each protected subprogram body must satisfy:
+
+
+@itemize *
+
+@item
+May reference only one protected component
+
+@item
+May not reference nonconstant entities outside the protected subprogram
+scope.
+
+@item
+May not contain address representation items, allocators, or quantified
+expressions.
+
+@item
+May not contain delay, goto, loop, or procedure-call statements.
+
+@item
+May not contain exported and imported entities
+
+@item
+May not dereferenced access values
+
+@item
+Function calls and attribute references must be static
+@end itemize
+
@node Pragma Loop_Invariant,Pragma Loop_Optimize,Pragma Lock_Free,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-loop-invariant}@anchor{98}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-loop-invariant}@anchor{99}
@section Pragma Loop_Invariant
@@ -5149,7 +5208,7 @@ attribute can only be used within the expression of a @code{Loop_Invariant}
pragma. For full details, see documentation of attribute @code{Loop_Entry}.
@node Pragma Loop_Optimize,Pragma Loop_Variant,Pragma Loop_Invariant,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-loop-optimize}@anchor{99}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-loop-optimize}@anchor{9a}
@section Pragma Loop_Optimize
@@ -5211,7 +5270,7 @@ compiler in order to enable the relevant optimizations, that is to say
vectorization.
@node Pragma Loop_Variant,Pragma Machine_Attribute,Pragma Loop_Optimize,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-loop-variant}@anchor{9a}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-loop-variant}@anchor{9b}
@section Pragma Loop_Variant
@@ -5258,7 +5317,7 @@ The @code{Loop_Entry} attribute may be used within the expressions of the
@code{Loop_Variant} pragma to refer to values on entry to the loop.
@node Pragma Machine_Attribute,Pragma Main,Pragma Loop_Variant,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-machine-attribute}@anchor{9b}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-machine-attribute}@anchor{9c}
@section Pragma Machine_Attribute
@@ -5284,7 +5343,7 @@ which may make this pragma unusable for some attributes.
For further information see @cite{GNU Compiler Collection (GCC) Internals}.
@node Pragma Main,Pragma Main_Storage,Pragma Machine_Attribute,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-main}@anchor{9c}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-main}@anchor{9d}
@section Pragma Main
@@ -5304,7 +5363,7 @@ This pragma is provided for compatibility with OpenVMS VAX Systems. It has
no effect in GNAT, other than being syntax checked.
@node Pragma Main_Storage,Pragma Max_Queue_Length,Pragma Main,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-main-storage}@anchor{9d}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-main-storage}@anchor{9e}
@section Pragma Main_Storage
@@ -5323,7 +5382,7 @@ This pragma is provided for compatibility with OpenVMS VAX Systems. It has
no effect in GNAT, other than being syntax checked.
@node Pragma Max_Queue_Length,Pragma No_Body,Pragma Main_Storage,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id22}@anchor{9e}@anchor{gnat_rm/implementation_defined_pragmas pragma-max-queue-length}@anchor{9f}
+@anchor{gnat_rm/implementation_defined_pragmas id22}@anchor{9f}@anchor{gnat_rm/implementation_defined_pragmas pragma-max-queue-length}@anchor{a0}
@section Pragma Max_Queue_Length
@@ -5335,11 +5394,13 @@ pragma Max_Entry_Queue (static_integer_EXPRESSION);
This pragma is used to specify the maximum callers per entry queue for
individual protected entries and entry families. It accepts a single
-positive integer as a parameter and must appear after the declaration
-of an entry.
+integer (-1 or more) as a parameter and must appear after the declaration of an
+entry.
+
+A value of -1 represents no additional restriction on queue length.
@node Pragma No_Body,Pragma No_Caching,Pragma Max_Queue_Length,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-no-body}@anchor{a0}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-no-body}@anchor{a1}
@section Pragma No_Body
@@ -5362,7 +5423,7 @@ dummy body with a No_Body pragma ensures that there is no interference from
earlier versions of the package body.
@node Pragma No_Caching,Pragma No_Component_Reordering,Pragma No_Body,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-no-caching}@anchor{a1}@anchor{gnat_rm/implementation_defined_pragmas id23}@anchor{a2}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-no-caching}@anchor{a2}@anchor{gnat_rm/implementation_defined_pragmas id23}@anchor{a3}
@section Pragma No_Caching
@@ -5376,7 +5437,7 @@ For the semantics of this pragma, see the entry for aspect @code{No_Caching} in
the SPARK 2014 Reference Manual, section 7.1.2.
@node Pragma No_Component_Reordering,Pragma No_Elaboration_Code_All,Pragma No_Caching,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-no-component-reordering}@anchor{a3}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-no-component-reordering}@anchor{a4}
@section Pragma No_Component_Reordering
@@ -5395,7 +5456,7 @@ declared in units to which the pragma applies and there is a requirement
that this pragma be used consistently within a partition.
@node Pragma No_Elaboration_Code_All,Pragma No_Heap_Finalization,Pragma No_Component_Reordering,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id24}@anchor{a4}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-elaboration-code-all}@anchor{a5}
+@anchor{gnat_rm/implementation_defined_pragmas id24}@anchor{a5}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-elaboration-code-all}@anchor{a6}
@section Pragma No_Elaboration_Code_All
@@ -5414,7 +5475,7 @@ current unit, it must also have the No_Elaboration_Code_All aspect set.
It may be applied to package or subprogram specs or their generic versions.
@node Pragma No_Heap_Finalization,Pragma No_Inline,Pragma No_Elaboration_Code_All,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-no-heap-finalization}@anchor{a6}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-no-heap-finalization}@anchor{a7}
@section Pragma No_Heap_Finalization
@@ -5446,7 +5507,7 @@ lose its @code{No_Heap_Finalization} pragma when the corresponding instance does
appear at the library level.
@node Pragma No_Inline,Pragma No_Return,Pragma No_Heap_Finalization,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id25}@anchor{a7}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-inline}@anchor{a8}
+@anchor{gnat_rm/implementation_defined_pragmas id25}@anchor{a8}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-inline}@anchor{a9}
@section Pragma No_Inline
@@ -5464,7 +5525,7 @@ in particular it is not subject to the use of option @emph{-gnatn} or
pragma @code{Inline_Always} for the same @code{NAME}.
@node Pragma No_Return,Pragma No_Run_Time,Pragma No_Inline,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-no-return}@anchor{a9}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-no-return}@anchor{aa}
@section Pragma No_Return
@@ -5491,7 +5552,7 @@ available in all earlier versions of Ada as an implementation-defined
pragma.
@node Pragma No_Run_Time,Pragma No_Strict_Aliasing,Pragma No_Return,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-no-run-time}@anchor{aa}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-no-run-time}@anchor{ab}
@section Pragma No_Run_Time
@@ -5507,7 +5568,7 @@ internal testing. The pragma has been superseded by the reconfigurable
runtime capability of GNAT.
@node Pragma No_Strict_Aliasing,Pragma No_Tagged_Streams,Pragma No_Run_Time,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-no-strict-aliasing}@anchor{ab}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-no-strict-aliasing}@anchor{ac}
@section Pragma No_Strict_Aliasing
@@ -5529,7 +5590,7 @@ in the @cite{GNAT User's Guide}.
This pragma currently has no effects on access to unconstrained array types.
@node Pragma No_Tagged_Streams,Pragma Normalize_Scalars,Pragma No_Strict_Aliasing,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-no-tagged-streams}@anchor{ac}@anchor{gnat_rm/implementation_defined_pragmas id26}@anchor{ad}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-no-tagged-streams}@anchor{ad}@anchor{gnat_rm/implementation_defined_pragmas id26}@anchor{ae}
@section Pragma No_Tagged_Streams
@@ -5568,7 +5629,7 @@ with empty strings. This is useful to avoid exposing entity names at binary
level but has a negative impact on the debuggability of tagged types.
@node Pragma Normalize_Scalars,Pragma Obsolescent,Pragma No_Tagged_Streams,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-normalize-scalars}@anchor{ae}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-normalize-scalars}@anchor{af}
@section Pragma Normalize_Scalars
@@ -5650,7 +5711,7 @@ will always generate an invalid value if one exists.
@end table
@node Pragma Obsolescent,Pragma Optimize_Alignment,Pragma Normalize_Scalars,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-obsolescent}@anchor{af}@anchor{gnat_rm/implementation_defined_pragmas id27}@anchor{b0}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-obsolescent}@anchor{b0}@anchor{gnat_rm/implementation_defined_pragmas id27}@anchor{b1}
@section Pragma Obsolescent
@@ -5746,7 +5807,7 @@ So if you specify @code{Entity =>} for the @code{Entity} argument, and a @code{M
argument is present, it must be preceded by @code{Message =>}.
@node Pragma Optimize_Alignment,Pragma Ordered,Pragma Obsolescent,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-optimize-alignment}@anchor{b1}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-optimize-alignment}@anchor{b2}
@section Pragma Optimize_Alignment
@@ -5832,7 +5893,7 @@ latter are compiled by default in pragma Optimize_Alignment (Off) mode if no
pragma appears at the start of the file.
@node Pragma Ordered,Pragma Overflow_Mode,Pragma Optimize_Alignment,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-ordered}@anchor{b2}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-ordered}@anchor{b3}
@section Pragma Ordered
@@ -5924,7 +5985,7 @@ For additional information please refer to the description of the
@emph{-gnatw.u} switch in the GNAT User's Guide.
@node Pragma Overflow_Mode,Pragma Overriding_Renamings,Pragma Ordered,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-overflow-mode}@anchor{b3}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-overflow-mode}@anchor{b4}
@section Pragma Overflow_Mode
@@ -5963,7 +6024,7 @@ The pragma @code{Unsuppress (Overflow_Check)} unsuppresses (enables)
overflow checking, but does not affect the overflow mode.
@node Pragma Overriding_Renamings,Pragma Partition_Elaboration_Policy,Pragma Overflow_Mode,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-overriding-renamings}@anchor{b4}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-overriding-renamings}@anchor{b5}
@section Pragma Overriding_Renamings
@@ -5998,7 +6059,7 @@ RM 8.3 (15) stipulates that an overridden operation is not visible within the
declaration of the overriding operation.
@node Pragma Partition_Elaboration_Policy,Pragma Part_Of,Pragma Overriding_Renamings,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-partition-elaboration-policy}@anchor{b5}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-partition-elaboration-policy}@anchor{b6}
@section Pragma Partition_Elaboration_Policy
@@ -6015,7 +6076,7 @@ versions of Ada as an implementation-defined pragma.
See Ada 2012 Reference Manual for details.
@node Pragma Part_Of,Pragma Passive,Pragma Partition_Elaboration_Policy,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id28}@anchor{b6}@anchor{gnat_rm/implementation_defined_pragmas pragma-part-of}@anchor{b7}
+@anchor{gnat_rm/implementation_defined_pragmas id28}@anchor{b7}@anchor{gnat_rm/implementation_defined_pragmas pragma-part-of}@anchor{b8}
@section Pragma Part_Of
@@ -6031,7 +6092,7 @@ For the semantics of this pragma, see the entry for aspect @code{Part_Of} in the
SPARK 2014 Reference Manual, section 7.2.6.
@node Pragma Passive,Pragma Persistent_BSS,Pragma Part_Of,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-passive}@anchor{b8}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-passive}@anchor{b9}
@section Pragma Passive
@@ -6055,7 +6116,7 @@ For more information on the subject of passive tasks, see the section
'Passive Task Optimization' in the GNAT Users Guide.
@node Pragma Persistent_BSS,Pragma Polling,Pragma Passive,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id29}@anchor{b9}@anchor{gnat_rm/implementation_defined_pragmas pragma-persistent-bss}@anchor{ba}
+@anchor{gnat_rm/implementation_defined_pragmas id29}@anchor{ba}@anchor{gnat_rm/implementation_defined_pragmas pragma-persistent-bss}@anchor{bb}
@section Pragma Persistent_BSS
@@ -6086,7 +6147,7 @@ If this pragma is used on a target where this feature is not supported,
then the pragma will be ignored. See also @code{pragma Linker_Section}.
@node Pragma Polling,Pragma Post,Pragma Persistent_BSS,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-polling}@anchor{bb}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-polling}@anchor{bc}
@section Pragma Polling
@@ -6128,7 +6189,7 @@ Note that polling can also be enabled by use of the @emph{-gnatP} switch.
See the section on switches for gcc in the @cite{GNAT User's Guide}.
@node Pragma Post,Pragma Postcondition,Pragma Polling,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-post}@anchor{bc}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-post}@anchor{bd}
@section Pragma Post
@@ -6153,7 +6214,7 @@ appear at the start of the declarations in a subprogram body
(preceded only by other pragmas).
@node Pragma Postcondition,Pragma Post_Class,Pragma Post,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-postcondition}@anchor{bd}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-postcondition}@anchor{be}
@section Pragma Postcondition
@@ -6318,7 +6379,7 @@ Ada 2012, and has been retained in its original form for
compatibility purposes.
@node Pragma Post_Class,Pragma Rename_Pragma,Pragma Postcondition,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-post-class}@anchor{be}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-post-class}@anchor{bf}
@section Pragma Post_Class
@@ -6353,7 +6414,7 @@ policy that controls this pragma is @code{Post'Class}, not
@code{Post_Class}.
@node Pragma Rename_Pragma,Pragma Pre,Pragma Post_Class,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-rename-pragma}@anchor{bf}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-rename-pragma}@anchor{c0}
@section Pragma Rename_Pragma
@@ -6392,7 +6453,7 @@ Pragma Inline_Only will not necessarily mean the same thing as the other Ada
compiler; it's up to you to make sure the semantics are close enough.
@node Pragma Pre,Pragma Precondition,Pragma Rename_Pragma,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-pre}@anchor{c0}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-pre}@anchor{c1}
@section Pragma Pre
@@ -6417,7 +6478,7 @@ appear at the start of the declarations in a subprogram body
(preceded only by other pragmas).
@node Pragma Precondition,Pragma Predicate,Pragma Pre,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-precondition}@anchor{c1}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-precondition}@anchor{c2}
@section Pragma Precondition
@@ -6476,7 +6537,7 @@ Ada 2012, and has been retained in its original form for
compatibility purposes.
@node Pragma Predicate,Pragma Predicate_Failure,Pragma Precondition,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-predicate}@anchor{c2}@anchor{gnat_rm/implementation_defined_pragmas id30}@anchor{c3}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-predicate}@anchor{c3}@anchor{gnat_rm/implementation_defined_pragmas id30}@anchor{c4}
@section Pragma Predicate
@@ -6530,7 +6591,7 @@ defined for subtype B). When following this approach, the
use of predicates should be avoided.
@node Pragma Predicate_Failure,Pragma Preelaborable_Initialization,Pragma Predicate,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-predicate-failure}@anchor{c4}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-predicate-failure}@anchor{c5}
@section Pragma Predicate_Failure
@@ -6547,7 +6608,7 @@ the language-defined
@code{Predicate_Failure} aspect, and shares its restrictions and semantics.
@node Pragma Preelaborable_Initialization,Pragma Prefix_Exception_Messages,Pragma Predicate_Failure,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-preelaborable-initialization}@anchor{c5}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-preelaborable-initialization}@anchor{c6}
@section Pragma Preelaborable_Initialization
@@ -6562,7 +6623,7 @@ versions of Ada as an implementation-defined pragma.
See Ada 2012 Reference Manual for details.
@node Pragma Prefix_Exception_Messages,Pragma Pre_Class,Pragma Preelaborable_Initialization,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-prefix-exception-messages}@anchor{c6}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-prefix-exception-messages}@anchor{c7}
@section Pragma Prefix_Exception_Messages
@@ -6593,7 +6654,7 @@ prefixing in this case, you can always call
@code{GNAT.Source_Info.Enclosing_Entity} and prepend the string manually.
@node Pragma Pre_Class,Pragma Priority_Specific_Dispatching,Pragma Prefix_Exception_Messages,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-pre-class}@anchor{c7}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-pre-class}@anchor{c8}
@section Pragma Pre_Class
@@ -6628,7 +6689,7 @@ policy that controls this pragma is @code{Pre'Class}, not
@code{Pre_Class}.
@node Pragma Priority_Specific_Dispatching,Pragma Profile,Pragma Pre_Class,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-priority-specific-dispatching}@anchor{c8}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-priority-specific-dispatching}@anchor{c9}
@section Pragma Priority_Specific_Dispatching
@@ -6652,7 +6713,7 @@ versions of Ada as an implementation-defined pragma.
See Ada 2012 Reference Manual for details.
@node Pragma Profile,Pragma Profile_Warnings,Pragma Priority_Specific_Dispatching,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-profile}@anchor{c9}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-profile}@anchor{ca}
@section Pragma Profile
@@ -6926,7 +6987,7 @@ conforming Ada constructs. The profile enables the following three pragmas:
@end itemize
@node Pragma Profile_Warnings,Pragma Propagate_Exceptions,Pragma Profile,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-profile-warnings}@anchor{ca}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-profile-warnings}@anchor{cb}
@section Pragma Profile_Warnings
@@ -6944,7 +7005,7 @@ violations of the profile generate warning messages instead
of error messages.
@node Pragma Propagate_Exceptions,Pragma Provide_Shift_Operators,Pragma Profile_Warnings,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-propagate-exceptions}@anchor{cb}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-propagate-exceptions}@anchor{cc}
@section Pragma Propagate_Exceptions
@@ -6963,7 +7024,7 @@ purposes. It used to be used in connection with optimization of
a now-obsolete mechanism for implementation of exceptions.
@node Pragma Provide_Shift_Operators,Pragma Psect_Object,Pragma Propagate_Exceptions,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-provide-shift-operators}@anchor{cc}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-provide-shift-operators}@anchor{cd}
@section Pragma Provide_Shift_Operators
@@ -6983,7 +7044,7 @@ including the function declarations for these five operators, together
with the pragma Import (Intrinsic, ...) statements.
@node Pragma Psect_Object,Pragma Pure_Function,Pragma Provide_Shift_Operators,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-psect-object}@anchor{cd}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-psect-object}@anchor{ce}
@section Pragma Psect_Object
@@ -7003,7 +7064,7 @@ EXTERNAL_SYMBOL ::=
This pragma is identical in effect to pragma @code{Common_Object}.
@node Pragma Pure_Function,Pragma Rational,Pragma Psect_Object,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-pure-function}@anchor{ce}@anchor{gnat_rm/implementation_defined_pragmas id31}@anchor{cf}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-pure-function}@anchor{cf}@anchor{gnat_rm/implementation_defined_pragmas id31}@anchor{d0}
@section Pragma Pure_Function
@@ -7065,7 +7126,7 @@ unit is not a Pure unit in the categorization sense. So for example, a function
thus marked is free to @code{with} non-pure units.
@node Pragma Rational,Pragma Ravenscar,Pragma Pure_Function,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-rational}@anchor{d0}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-rational}@anchor{d1}
@section Pragma Rational
@@ -7083,7 +7144,7 @@ pragma Profile (Rational);
@end example
@node Pragma Ravenscar,Pragma Refined_Depends,Pragma Rational,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-ravenscar}@anchor{d1}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-ravenscar}@anchor{d2}
@section Pragma Ravenscar
@@ -7103,7 +7164,7 @@ pragma Profile (Ravenscar);
which is the preferred method of setting the @code{Ravenscar} profile.
@node Pragma Refined_Depends,Pragma Refined_Global,Pragma Ravenscar,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-depends}@anchor{d2}@anchor{gnat_rm/implementation_defined_pragmas id32}@anchor{d3}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-depends}@anchor{d3}@anchor{gnat_rm/implementation_defined_pragmas id32}@anchor{d4}
@section Pragma Refined_Depends
@@ -7136,7 +7197,7 @@ For the semantics of this pragma, see the entry for aspect @code{Refined_Depends
the SPARK 2014 Reference Manual, section 6.1.5.
@node Pragma Refined_Global,Pragma Refined_Post,Pragma Refined_Depends,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-global}@anchor{d4}@anchor{gnat_rm/implementation_defined_pragmas id33}@anchor{d5}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-global}@anchor{d5}@anchor{gnat_rm/implementation_defined_pragmas id33}@anchor{d6}
@section Pragma Refined_Global
@@ -7161,7 +7222,7 @@ For the semantics of this pragma, see the entry for aspect @code{Refined_Global}
the SPARK 2014 Reference Manual, section 6.1.4.
@node Pragma Refined_Post,Pragma Refined_State,Pragma Refined_Global,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-post}@anchor{d6}@anchor{gnat_rm/implementation_defined_pragmas id34}@anchor{d7}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-post}@anchor{d7}@anchor{gnat_rm/implementation_defined_pragmas id34}@anchor{d8}
@section Pragma Refined_Post
@@ -7175,7 +7236,7 @@ For the semantics of this pragma, see the entry for aspect @code{Refined_Post} i
the SPARK 2014 Reference Manual, section 7.2.7.
@node Pragma Refined_State,Pragma Relative_Deadline,Pragma Refined_Post,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-state}@anchor{d8}@anchor{gnat_rm/implementation_defined_pragmas id35}@anchor{d9}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-state}@anchor{d9}@anchor{gnat_rm/implementation_defined_pragmas id35}@anchor{da}
@section Pragma Refined_State
@@ -7201,7 +7262,7 @@ For the semantics of this pragma, see the entry for aspect @code{Refined_State}
the SPARK 2014 Reference Manual, section 7.2.2.
@node Pragma Relative_Deadline,Pragma Remote_Access_Type,Pragma Refined_State,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-relative-deadline}@anchor{da}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-relative-deadline}@anchor{db}
@section Pragma Relative_Deadline
@@ -7216,7 +7277,7 @@ versions of Ada as an implementation-defined pragma.
See Ada 2012 Reference Manual for details.
@node Pragma Remote_Access_Type,Pragma Restricted_Run_Time,Pragma Relative_Deadline,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id36}@anchor{db}@anchor{gnat_rm/implementation_defined_pragmas pragma-remote-access-type}@anchor{dc}
+@anchor{gnat_rm/implementation_defined_pragmas id36}@anchor{dc}@anchor{gnat_rm/implementation_defined_pragmas pragma-remote-access-type}@anchor{dd}
@section Pragma Remote_Access_Type
@@ -7242,7 +7303,7 @@ pertaining to remote access to class-wide types. At instantiation, the
actual type must be a remote access to class-wide type.
@node Pragma Restricted_Run_Time,Pragma Restriction_Warnings,Pragma Remote_Access_Type,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-restricted-run-time}@anchor{dd}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-restricted-run-time}@anchor{de}
@section Pragma Restricted_Run_Time
@@ -7263,7 +7324,7 @@ which is the preferred method of setting the restricted run time
profile.
@node Pragma Restriction_Warnings,Pragma Reviewable,Pragma Restricted_Run_Time,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-restriction-warnings}@anchor{de}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-restriction-warnings}@anchor{df}
@section Pragma Restriction_Warnings
@@ -7301,7 +7362,7 @@ generating a warning, but any other use of implementation
defined pragmas will cause a warning to be generated.
@node Pragma Reviewable,Pragma Secondary_Stack_Size,Pragma Restriction_Warnings,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-reviewable}@anchor{df}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-reviewable}@anchor{e0}
@section Pragma Reviewable
@@ -7405,7 +7466,7 @@ comprehensive messages identifying possible problems based on this
information.
@node Pragma Secondary_Stack_Size,Pragma Share_Generic,Pragma Reviewable,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id37}@anchor{e0}@anchor{gnat_rm/implementation_defined_pragmas pragma-secondary-stack-size}@anchor{e1}
+@anchor{gnat_rm/implementation_defined_pragmas id37}@anchor{e1}@anchor{gnat_rm/implementation_defined_pragmas pragma-secondary-stack-size}@anchor{e2}
@section Pragma Secondary_Stack_Size
@@ -7441,7 +7502,7 @@ Note the pragma cannot appear when the restriction @code{No_Secondary_Stack}
is in effect.
@node Pragma Share_Generic,Pragma Shared,Pragma Secondary_Stack_Size,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-share-generic}@anchor{e2}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-share-generic}@anchor{e3}
@section Pragma Share_Generic
@@ -7459,7 +7520,7 @@ than to check that the given names are all names of generic units or
generic instances.
@node Pragma Shared,Pragma Short_Circuit_And_Or,Pragma Share_Generic,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id38}@anchor{e3}@anchor{gnat_rm/implementation_defined_pragmas pragma-shared}@anchor{e4}
+@anchor{gnat_rm/implementation_defined_pragmas id38}@anchor{e4}@anchor{gnat_rm/implementation_defined_pragmas pragma-shared}@anchor{e5}
@section Pragma Shared
@@ -7467,7 +7528,7 @@ This pragma is provided for compatibility with Ada 83. The syntax and
semantics are identical to pragma Atomic.
@node Pragma Short_Circuit_And_Or,Pragma Short_Descriptors,Pragma Shared,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-short-circuit-and-or}@anchor{e5}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-short-circuit-and-or}@anchor{e6}
@section Pragma Short_Circuit_And_Or
@@ -7486,7 +7547,7 @@ within the file being compiled, it applies only to the file being compiled.
There is no requirement that all units in a partition use this option.
@node Pragma Short_Descriptors,Pragma Simple_Storage_Pool_Type,Pragma Short_Circuit_And_Or,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-short-descriptors}@anchor{e6}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-short-descriptors}@anchor{e7}
@section Pragma Short_Descriptors
@@ -7500,7 +7561,7 @@ This pragma is provided for compatibility with other Ada implementations. It
is recognized but ignored by all current versions of GNAT.
@node Pragma Simple_Storage_Pool_Type,Pragma Source_File_Name,Pragma Short_Descriptors,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-simple-storage-pool-type}@anchor{e7}@anchor{gnat_rm/implementation_defined_pragmas id39}@anchor{e8}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-simple-storage-pool-type}@anchor{e8}@anchor{gnat_rm/implementation_defined_pragmas id39}@anchor{e9}
@section Pragma Simple_Storage_Pool_Type
@@ -7554,7 +7615,7 @@ storage-management discipline).
An object of a simple storage pool type can be associated with an access
type by specifying the attribute
-@ref{e9,,Simple_Storage_Pool}. For example:
+@ref{ea,,Simple_Storage_Pool}. For example:
@example
My_Pool : My_Simple_Storage_Pool_Type;
@@ -7564,11 +7625,11 @@ type Acc is access My_Data_Type;
for Acc'Simple_Storage_Pool use My_Pool;
@end example
-See attribute @ref{e9,,Simple_Storage_Pool}
+See attribute @ref{ea,,Simple_Storage_Pool}
for further details.
@node Pragma Source_File_Name,Pragma Source_File_Name_Project,Pragma Simple_Storage_Pool_Type,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name}@anchor{ea}@anchor{gnat_rm/implementation_defined_pragmas id40}@anchor{eb}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name}@anchor{eb}@anchor{gnat_rm/implementation_defined_pragmas id40}@anchor{ec}
@section Pragma Source_File_Name
@@ -7660,19 +7721,19 @@ aware of these pragmas, and so other tools that use the projet file would not
be aware of the intended naming conventions. If you are using project files,
file naming is controlled by Source_File_Name_Project pragmas, which are
usually supplied automatically by the project manager. A pragma
-Source_File_Name cannot appear after a @ref{ec,,Pragma Source_File_Name_Project}.
+Source_File_Name cannot appear after a @ref{ed,,Pragma Source_File_Name_Project}.
For more details on the use of the @code{Source_File_Name} pragma, see the
sections on @code{Using Other File Names} and @cite{Alternative File Naming Schemes' in the :title:`GNAT User's Guide}.
@node Pragma Source_File_Name_Project,Pragma Source_Reference,Pragma Source_File_Name,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name-project}@anchor{ec}@anchor{gnat_rm/implementation_defined_pragmas id41}@anchor{ed}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name-project}@anchor{ed}@anchor{gnat_rm/implementation_defined_pragmas id41}@anchor{ee}
@section Pragma Source_File_Name_Project
This pragma has the same syntax and semantics as pragma Source_File_Name.
It is only allowed as a stand-alone configuration pragma.
-It cannot appear after a @ref{ea,,Pragma Source_File_Name}, and
+It cannot appear after a @ref{eb,,Pragma Source_File_Name}, and
most importantly, once pragma Source_File_Name_Project appears,
no further Source_File_Name pragmas are allowed.
@@ -7684,7 +7745,7 @@ Source_File_Name or Source_File_Name_Project pragmas (which would not be
known to the project manager).
@node Pragma Source_Reference,Pragma SPARK_Mode,Pragma Source_File_Name_Project,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-source-reference}@anchor{ee}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-source-reference}@anchor{ef}
@section Pragma Source_Reference
@@ -7708,7 +7769,7 @@ string expression other than a string literal. This is because its value
is needed for error messages issued by all phases of the compiler.
@node Pragma SPARK_Mode,Pragma Static_Elaboration_Desired,Pragma Source_Reference,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-spark-mode}@anchor{ef}@anchor{gnat_rm/implementation_defined_pragmas id42}@anchor{f0}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-spark-mode}@anchor{f0}@anchor{gnat_rm/implementation_defined_pragmas id42}@anchor{f1}
@section Pragma SPARK_Mode
@@ -7790,7 +7851,7 @@ SPARK_Mode (@code{Off}), then that pragma will need to be repeated in
the package body.
@node Pragma Static_Elaboration_Desired,Pragma Stream_Convert,Pragma SPARK_Mode,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-static-elaboration-desired}@anchor{f1}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-static-elaboration-desired}@anchor{f2}
@section Pragma Static_Elaboration_Desired
@@ -7814,7 +7875,7 @@ construction of larger aggregates with static components that include an others
choice.)
@node Pragma Stream_Convert,Pragma Style_Checks,Pragma Static_Elaboration_Desired,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-stream-convert}@anchor{f2}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-stream-convert}@anchor{f3}
@section Pragma Stream_Convert
@@ -7891,7 +7952,7 @@ the pragma is silently ignored, and the default implementation of the stream
attributes is used instead.
@node Pragma Style_Checks,Pragma Subtitle,Pragma Stream_Convert,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-style-checks}@anchor{f3}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-style-checks}@anchor{f4}
@section Pragma Style_Checks
@@ -7964,7 +8025,7 @@ Rf2 : Integer := ARG; -- OK, no error
@end example
@node Pragma Subtitle,Pragma Suppress,Pragma Style_Checks,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-subtitle}@anchor{f4}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-subtitle}@anchor{f5}
@section Pragma Subtitle
@@ -7978,7 +8039,7 @@ This pragma is recognized for compatibility with other Ada compilers
but is ignored by GNAT.
@node Pragma Suppress,Pragma Suppress_All,Pragma Subtitle,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress}@anchor{f5}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress}@anchor{f6}
@section Pragma Suppress
@@ -8051,7 +8112,7 @@ Of course, run-time checks are omitted whenever the compiler can prove
that they will not fail, whether or not checks are suppressed.
@node Pragma Suppress_All,Pragma Suppress_Debug_Info,Pragma Suppress,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-all}@anchor{f6}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-all}@anchor{f7}
@section Pragma Suppress_All
@@ -8070,7 +8131,7 @@ The use of the standard Ada pragma @code{Suppress (All_Checks)}
as a normal configuration pragma is the preferred usage in GNAT.
@node Pragma Suppress_Debug_Info,Pragma Suppress_Exception_Locations,Pragma Suppress_All,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-debug-info}@anchor{f7}@anchor{gnat_rm/implementation_defined_pragmas id43}@anchor{f8}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-debug-info}@anchor{f8}@anchor{gnat_rm/implementation_defined_pragmas id43}@anchor{f9}
@section Pragma Suppress_Debug_Info
@@ -8085,7 +8146,7 @@ for the specified entity. It is intended primarily for use in debugging
the debugger, and navigating around debugger problems.
@node Pragma Suppress_Exception_Locations,Pragma Suppress_Initialization,Pragma Suppress_Debug_Info,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-exception-locations}@anchor{f9}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-exception-locations}@anchor{fa}
@section Pragma Suppress_Exception_Locations
@@ -8108,7 +8169,7 @@ a partition, so it is fine to have some units within a partition compiled
with this pragma and others compiled in normal mode without it.
@node Pragma Suppress_Initialization,Pragma Task_Name,Pragma Suppress_Exception_Locations,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id44}@anchor{fa}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-initialization}@anchor{fb}
+@anchor{gnat_rm/implementation_defined_pragmas id44}@anchor{fb}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-initialization}@anchor{fc}
@section Pragma Suppress_Initialization
@@ -8153,7 +8214,7 @@ is suppressed, just as though its subtype had been given in a pragma
Suppress_Initialization, as described above.
@node Pragma Task_Name,Pragma Task_Storage,Pragma Suppress_Initialization,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-task-name}@anchor{fc}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-task-name}@anchor{fd}
@section Pragma Task_Name
@@ -8209,7 +8270,7 @@ end;
@end example
@node Pragma Task_Storage,Pragma Test_Case,Pragma Task_Name,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-task-storage}@anchor{fd}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-task-storage}@anchor{fe}
@section Pragma Task_Storage
@@ -8229,7 +8290,7 @@ created, depending on the target. This pragma can appear anywhere a
type.
@node Pragma Test_Case,Pragma Thread_Local_Storage,Pragma Task_Storage,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-test-case}@anchor{fe}@anchor{gnat_rm/implementation_defined_pragmas id45}@anchor{ff}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-test-case}@anchor{ff}@anchor{gnat_rm/implementation_defined_pragmas id45}@anchor{100}
@section Pragma Test_Case
@@ -8285,7 +8346,7 @@ postcondition. Mode @code{Robustness} indicates that the precondition and
postcondition of the subprogram should be ignored for this test case.
@node Pragma Thread_Local_Storage,Pragma Time_Slice,Pragma Test_Case,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-thread-local-storage}@anchor{100}@anchor{gnat_rm/implementation_defined_pragmas id46}@anchor{101}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-thread-local-storage}@anchor{101}@anchor{gnat_rm/implementation_defined_pragmas id46}@anchor{102}
@section Pragma Thread_Local_Storage
@@ -8323,7 +8384,7 @@ If this pragma is used on a system where @code{TLS} is not supported,
then an error message will be generated and the program will be rejected.
@node Pragma Time_Slice,Pragma Title,Pragma Thread_Local_Storage,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-time-slice}@anchor{102}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-time-slice}@anchor{103}
@section Pragma Time_Slice
@@ -8339,7 +8400,7 @@ It is ignored if it is used in a system that does not allow this control,
or if it appears in other than the main program unit.
@node Pragma Title,Pragma Type_Invariant,Pragma Time_Slice,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-title}@anchor{103}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-title}@anchor{104}
@section Pragma Title
@@ -8364,7 +8425,7 @@ notation is used, and named and positional notation can be mixed
following the normal rules for procedure calls in Ada.
@node Pragma Type_Invariant,Pragma Type_Invariant_Class,Pragma Title,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant}@anchor{104}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant}@anchor{105}
@section Pragma Type_Invariant
@@ -8385,7 +8446,7 @@ controlled by the assertion identifier @code{Type_Invariant}
rather than @code{Invariant}.
@node Pragma Type_Invariant_Class,Pragma Unchecked_Union,Pragma Type_Invariant,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id47}@anchor{105}@anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant-class}@anchor{106}
+@anchor{gnat_rm/implementation_defined_pragmas id47}@anchor{106}@anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant-class}@anchor{107}
@section Pragma Type_Invariant_Class
@@ -8412,7 +8473,7 @@ policy that controls this pragma is @code{Type_Invariant'Class},
not @code{Type_Invariant_Class}.
@node Pragma Unchecked_Union,Pragma Unevaluated_Use_Of_Old,Pragma Type_Invariant_Class,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-unchecked-union}@anchor{107}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-unchecked-union}@anchor{108}
@section Pragma Unchecked_Union
@@ -8432,7 +8493,7 @@ version in all language modes (Ada 83, Ada 95, and Ada 2005). For full
details, consult the Ada 2012 Reference Manual, section B.3.3.
@node Pragma Unevaluated_Use_Of_Old,Pragma Unimplemented_Unit,Pragma Unchecked_Union,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-unevaluated-use-of-old}@anchor{108}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-unevaluated-use-of-old}@anchor{109}
@section Pragma Unevaluated_Use_Of_Old
@@ -8487,7 +8548,7 @@ uses up to the end of the corresponding statement sequence or
sequence of package declarations.
@node Pragma Unimplemented_Unit,Pragma Universal_Aliasing,Pragma Unevaluated_Use_Of_Old,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-unimplemented-unit}@anchor{109}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-unimplemented-unit}@anchor{10a}
@section Pragma Unimplemented_Unit
@@ -8507,7 +8568,7 @@ The abort only happens if code is being generated. Thus you can use
specs of unimplemented packages in syntax or semantic checking mode.
@node Pragma Universal_Aliasing,Pragma Universal_Data,Pragma Unimplemented_Unit,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-universal-aliasing}@anchor{10a}@anchor{gnat_rm/implementation_defined_pragmas id48}@anchor{10b}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-universal-aliasing}@anchor{10b}@anchor{gnat_rm/implementation_defined_pragmas id48}@anchor{10c}
@section Pragma Universal_Aliasing
@@ -8526,7 +8587,7 @@ situations in which it must be suppressed, see the section on
@code{Optimization and Strict Aliasing} in the @cite{GNAT User's Guide}.
@node Pragma Universal_Data,Pragma Unmodified,Pragma Universal_Aliasing,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-universal-data}@anchor{10c}@anchor{gnat_rm/implementation_defined_pragmas id49}@anchor{10d}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-universal-data}@anchor{10d}@anchor{gnat_rm/implementation_defined_pragmas id49}@anchor{10e}
@section Pragma Universal_Data
@@ -8550,7 +8611,7 @@ of this pragma is also available by applying the -univ switch on the
compilations of units where universal addressing of the data is desired.
@node Pragma Unmodified,Pragma Unreferenced,Pragma Universal_Data,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id50}@anchor{10e}@anchor{gnat_rm/implementation_defined_pragmas pragma-unmodified}@anchor{10f}
+@anchor{gnat_rm/implementation_defined_pragmas id50}@anchor{10f}@anchor{gnat_rm/implementation_defined_pragmas pragma-unmodified}@anchor{110}
@section Pragma Unmodified
@@ -8584,7 +8645,7 @@ Thus it is never necessary to use @code{pragma Unmodified} for such
variables, though it is harmless to do so.
@node Pragma Unreferenced,Pragma Unreferenced_Objects,Pragma Unmodified,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced}@anchor{110}@anchor{gnat_rm/implementation_defined_pragmas id51}@anchor{111}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced}@anchor{111}@anchor{gnat_rm/implementation_defined_pragmas id51}@anchor{112}
@section Pragma Unreferenced
@@ -8628,7 +8689,7 @@ Note that if a warning is desired for all calls to a given subprogram,
regardless of whether they occur in the same unit as the subprogram
declaration, then this pragma should not be used (calls from another
unit would not be flagged); pragma Obsolescent can be used instead
-for this purpose, see @ref{af,,Pragma Obsolescent}.
+for this purpose, see @ref{b0,,Pragma Obsolescent}.
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
@@ -8644,7 +8705,7 @@ Thus it is never necessary to use @code{pragma Unreferenced} for such
variables, though it is harmless to do so.
@node Pragma Unreferenced_Objects,Pragma Unreserve_All_Interrupts,Pragma Unreferenced,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced-objects}@anchor{112}@anchor{gnat_rm/implementation_defined_pragmas id52}@anchor{113}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced-objects}@anchor{113}@anchor{gnat_rm/implementation_defined_pragmas id52}@anchor{114}
@section Pragma Unreferenced_Objects
@@ -8669,7 +8730,7 @@ compiler will automatically suppress unwanted warnings about these variables
not being referenced.
@node Pragma Unreserve_All_Interrupts,Pragma Unsuppress,Pragma Unreferenced_Objects,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-unreserve-all-interrupts}@anchor{114}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-unreserve-all-interrupts}@anchor{115}
@section Pragma Unreserve_All_Interrupts
@@ -8705,7 +8766,7 @@ handled, see pragma @code{Interrupt_State}, which subsumes the functionality
of the @code{Unreserve_All_Interrupts} pragma.
@node Pragma Unsuppress,Pragma Use_VADS_Size,Pragma Unreserve_All_Interrupts,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-unsuppress}@anchor{115}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-unsuppress}@anchor{116}
@section Pragma Unsuppress
@@ -8741,7 +8802,7 @@ number of implementation-defined check names. See the description of pragma
@code{Suppress} for full details.
@node Pragma Use_VADS_Size,Pragma Unused,Pragma Unsuppress,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-use-vads-size}@anchor{116}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-use-vads-size}@anchor{117}
@section Pragma Use_VADS_Size
@@ -8765,7 +8826,7 @@ as implemented in the VADS compiler. See description of the VADS_Size
attribute for further details.
@node Pragma Unused,Pragma Validity_Checks,Pragma Use_VADS_Size,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-unused}@anchor{117}@anchor{gnat_rm/implementation_defined_pragmas id53}@anchor{118}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-unused}@anchor{118}@anchor{gnat_rm/implementation_defined_pragmas id53}@anchor{119}
@section Pragma Unused
@@ -8799,7 +8860,7 @@ Thus it is never necessary to use @code{pragma Unmodified} for such
variables, though it is harmless to do so.
@node Pragma Validity_Checks,Pragma Volatile,Pragma Unused,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-validity-checks}@anchor{119}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-validity-checks}@anchor{11a}
@section Pragma Validity_Checks
@@ -8855,7 +8916,7 @@ A := C; -- C will be validity checked
@end example
@node Pragma Volatile,Pragma Volatile_Full_Access,Pragma Validity_Checks,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id54}@anchor{11a}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile}@anchor{11b}
+@anchor{gnat_rm/implementation_defined_pragmas id54}@anchor{11b}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile}@anchor{11c}
@section Pragma Volatile
@@ -8873,7 +8934,7 @@ implementation of pragma Volatile is upwards compatible with the
implementation in DEC Ada 83.
@node Pragma Volatile_Full_Access,Pragma Volatile_Function,Pragma Volatile,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id55}@anchor{11c}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-full-access}@anchor{11d}
+@anchor{gnat_rm/implementation_defined_pragmas id55}@anchor{11d}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-full-access}@anchor{11e}
@section Pragma Volatile_Full_Access
@@ -8905,7 +8966,7 @@ It is not permissible to specify @code{Volatile_Full_Access} for a composite
(record or array) type or object that has at least one @code{Aliased} component.
@node Pragma Volatile_Function,Pragma Warning_As_Error,Pragma Volatile_Full_Access,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id56}@anchor{11e}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-function}@anchor{11f}
+@anchor{gnat_rm/implementation_defined_pragmas id56}@anchor{11f}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-function}@anchor{120}
@section Pragma Volatile_Function
@@ -8919,7 +8980,7 @@ For the semantics of this pragma, see the entry for aspect @code{Volatile_Functi
in the SPARK 2014 Reference Manual, section 7.1.2.
@node Pragma Warning_As_Error,Pragma Warnings,Pragma Volatile_Function,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-warning-as-error}@anchor{120}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-warning-as-error}@anchor{121}
@section Pragma Warning_As_Error
@@ -8930,18 +8991,21 @@ pragma Warning_As_Error (static_string_EXPRESSION);
@end example
This configuration pragma allows the programmer to specify a set
-of warnings that will be treated as errors. Any warning which
+of warnings that will be treated as errors. Any warning that
matches the pattern given by the pragma argument will be treated
-as an error. This gives much more precise control that -gnatwe
-which treats all warnings as errors.
+as an error. This gives more precise control than -gnatwe,
+which treats warnings as errors.
-The pattern may contain asterisks, which match zero or more characters in
-the message. For example, you can use
-@code{pragma Warning_As_Error ("bits of*unused")} to treat the warning
-message @code{warning: 960 bits of "a" unused} as an error. No other regular
-expression notations are permitted. All characters other than asterisk in
-these three specific cases are treated as literal characters in the match.
-The match is case insensitive, for example XYZ matches xyz.
+This pragma can apply to regular warnings (messages enabled by -gnatw)
+and to style warnings (messages that start with "(style)",
+enabled by -gnaty).
+
+The pattern may contain asterisks, which match zero or more characters
+in the message. For example, you can use @code{pragma Warning_As_Error
+("bits of*unused")} to treat the warning message @code{warning: 960 bits of
+"a" unused} as an error. All characters other than asterisk are treated
+as literal characters in the match. The match is case insensitive; for
+example XYZ matches xyz.
Note that the pattern matches if it occurs anywhere within the warning
message string (it is not necessary to put an asterisk at the start and
@@ -8954,7 +9018,7 @@ as shown in the example below, to treat a class of warnings as errors.
The above use of patterns to match the message applies only to warning
messages generated by the front end. This pragma can also be applied to
-warnings provided by the back end and mentioned in @ref{121,,Pragma Warnings}.
+warnings provided by the back end and mentioned in @ref{122,,Pragma Warnings}.
By using a single full @emph{-Wxxx} switch in the pragma, such warnings
can also be treated as errors.
@@ -9004,7 +9068,7 @@ the tag is changed from "warning:" to "error:" and the string
"[warning-as-error]" is appended to the end of the message.
@node Pragma Warnings,Pragma Weak_External,Pragma Warning_As_Error,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas id57}@anchor{122}@anchor{gnat_rm/implementation_defined_pragmas pragma-warnings}@anchor{121}
+@anchor{gnat_rm/implementation_defined_pragmas id57}@anchor{123}@anchor{gnat_rm/implementation_defined_pragmas pragma-warnings}@anchor{122}
@section Pragma Warnings
@@ -9160,7 +9224,7 @@ selectively for each tool, and as a consequence to detect useless pragma
Warnings with switch @code{-gnatw.w}.
@node Pragma Weak_External,Pragma Wide_Character_Encoding,Pragma Warnings,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-weak-external}@anchor{123}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-weak-external}@anchor{124}
@section Pragma Weak_External
@@ -9211,7 +9275,7 @@ end External_Module;
@end example
@node Pragma Wide_Character_Encoding,,Pragma Weak_External,Implementation Defined Pragmas
-@anchor{gnat_rm/implementation_defined_pragmas pragma-wide-character-encoding}@anchor{124}
+@anchor{gnat_rm/implementation_defined_pragmas pragma-wide-character-encoding}@anchor{125}
@section Pragma Wide_Character_Encoding
@@ -9242,7 +9306,7 @@ encoding within that file, and does not affect withed units, specs,
or subunits.
@node Implementation Defined Aspects,Implementation Defined Attributes,Implementation Defined Pragmas,Top
-@anchor{gnat_rm/implementation_defined_aspects implementation-defined-aspects}@anchor{125}@anchor{gnat_rm/implementation_defined_aspects doc}@anchor{126}@anchor{gnat_rm/implementation_defined_aspects id1}@anchor{127}
+@anchor{gnat_rm/implementation_defined_aspects implementation-defined-aspects}@anchor{126}@anchor{gnat_rm/implementation_defined_aspects doc}@anchor{127}@anchor{gnat_rm/implementation_defined_aspects id1}@anchor{128}
@chapter Implementation Defined Aspects
@@ -9361,7 +9425,7 @@ or attribute definition clause.
@end menu
@node Aspect Abstract_State,Aspect Annotate,,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-abstract-state}@anchor{128}
+@anchor{gnat_rm/implementation_defined_aspects aspect-abstract-state}@anchor{129}
@section Aspect Abstract_State
@@ -9370,7 +9434,7 @@ or attribute definition clause.
This aspect is equivalent to @ref{1c,,pragma Abstract_State}.
@node Aspect Annotate,Aspect Async_Readers,Aspect Abstract_State,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-annotate}@anchor{129}
+@anchor{gnat_rm/implementation_defined_aspects aspect-annotate}@anchor{12a}
@section Aspect Annotate
@@ -9378,7 +9442,7 @@ This aspect is equivalent to @ref{1c,,pragma Abstract_State}.
There are three forms of this aspect (where ID is an identifier,
and ARG is a general expression),
-corresponding to @ref{29,,pragma Annotate}.
+corresponding to @ref{2a,,pragma Annotate}.
@table @asis
@@ -9397,63 +9461,63 @@ Equivalent to @code{pragma Annotate (ID, ID @{, ARG@}, Entity => Name);}
@end table
@node Aspect Async_Readers,Aspect Async_Writers,Aspect Annotate,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-async-readers}@anchor{12a}
+@anchor{gnat_rm/implementation_defined_aspects aspect-async-readers}@anchor{12b}
@section Aspect Async_Readers
@geindex Async_Readers
-This boolean aspect is equivalent to @ref{30,,pragma Async_Readers}.
+This boolean aspect is equivalent to @ref{31,,pragma Async_Readers}.
@node Aspect Async_Writers,Aspect Constant_After_Elaboration,Aspect Async_Readers,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-async-writers}@anchor{12b}
+@anchor{gnat_rm/implementation_defined_aspects aspect-async-writers}@anchor{12c}
@section Aspect Async_Writers
@geindex Async_Writers
-This boolean aspect is equivalent to @ref{33,,pragma Async_Writers}.
+This boolean aspect is equivalent to @ref{34,,pragma Async_Writers}.
@node Aspect Constant_After_Elaboration,Aspect Contract_Cases,Aspect Async_Writers,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-constant-after-elaboration}@anchor{12c}
+@anchor{gnat_rm/implementation_defined_aspects aspect-constant-after-elaboration}@anchor{12d}
@section Aspect Constant_After_Elaboration
@geindex Constant_After_Elaboration
-This aspect is equivalent to @ref{44,,pragma Constant_After_Elaboration}.
+This aspect is equivalent to @ref{45,,pragma Constant_After_Elaboration}.
@node Aspect Contract_Cases,Aspect Depends,Aspect Constant_After_Elaboration,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-contract-cases}@anchor{12d}
+@anchor{gnat_rm/implementation_defined_aspects aspect-contract-cases}@anchor{12e}
@section Aspect Contract_Cases
@geindex Contract_Cases
-This aspect is equivalent to @ref{46,,pragma Contract_Cases}, the sequence
+This aspect is equivalent to @ref{47,,pragma Contract_Cases}, the sequence
of clauses being enclosed in parentheses so that syntactically it is an
aggregate.
@node Aspect Depends,Aspect Default_Initial_Condition,Aspect Contract_Cases,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-depends}@anchor{12e}
+@anchor{gnat_rm/implementation_defined_aspects aspect-depends}@anchor{12f}
@section Aspect Depends
@geindex Depends
-This aspect is equivalent to @ref{55,,pragma Depends}.
+This aspect is equivalent to @ref{56,,pragma Depends}.
@node Aspect Default_Initial_Condition,Aspect Dimension,Aspect Depends,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-default-initial-condition}@anchor{12f}
+@anchor{gnat_rm/implementation_defined_aspects aspect-default-initial-condition}@anchor{130}
@section Aspect Default_Initial_Condition
@geindex Default_Initial_Condition
-This aspect is equivalent to @ref{50,,pragma Default_Initial_Condition}.
+This aspect is equivalent to @ref{51,,pragma Default_Initial_Condition}.
@node Aspect Dimension,Aspect Dimension_System,Aspect Default_Initial_Condition,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-dimension}@anchor{130}
+@anchor{gnat_rm/implementation_defined_aspects aspect-dimension}@anchor{131}
@section Aspect Dimension
@@ -9489,7 +9553,7 @@ Note that when the dimensioned type is an integer type, then any
dimension value must be an integer literal.
@node Aspect Dimension_System,Aspect Disable_Controlled,Aspect Dimension,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-dimension-system}@anchor{131}
+@anchor{gnat_rm/implementation_defined_aspects aspect-dimension-system}@anchor{132}
@section Aspect Dimension_System
@@ -9549,7 +9613,7 @@ See section 'Performing Dimensionality Analysis in GNAT' in the GNAT Users
Guide for detailed examples of use of the dimension system.
@node Aspect Disable_Controlled,Aspect Effective_Reads,Aspect Dimension_System,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-disable-controlled}@anchor{132}
+@anchor{gnat_rm/implementation_defined_aspects aspect-disable-controlled}@anchor{133}
@section Aspect Disable_Controlled
@@ -9562,110 +9626,110 @@ where for example you might want a record to be controlled or not depending on
whether some run-time check is enabled or suppressed.
@node Aspect Effective_Reads,Aspect Effective_Writes,Aspect Disable_Controlled,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-effective-reads}@anchor{133}
+@anchor{gnat_rm/implementation_defined_aspects aspect-effective-reads}@anchor{134}
@section Aspect Effective_Reads
@geindex Effective_Reads
-This aspect is equivalent to @ref{5b,,pragma Effective_Reads}.
+This aspect is equivalent to @ref{5c,,pragma Effective_Reads}.
@node Aspect Effective_Writes,Aspect Extensions_Visible,Aspect Effective_Reads,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-effective-writes}@anchor{134}
+@anchor{gnat_rm/implementation_defined_aspects aspect-effective-writes}@anchor{135}
@section Aspect Effective_Writes
@geindex Effective_Writes
-This aspect is equivalent to @ref{5d,,pragma Effective_Writes}.
+This aspect is equivalent to @ref{5e,,pragma Effective_Writes}.
@node Aspect Extensions_Visible,Aspect Favor_Top_Level,Aspect Effective_Writes,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-extensions-visible}@anchor{135}
+@anchor{gnat_rm/implementation_defined_aspects aspect-extensions-visible}@anchor{136}
@section Aspect Extensions_Visible
@geindex Extensions_Visible
-This aspect is equivalent to @ref{69,,pragma Extensions_Visible}.
+This aspect is equivalent to @ref{6a,,pragma Extensions_Visible}.
@node Aspect Favor_Top_Level,Aspect Ghost,Aspect Extensions_Visible,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-favor-top-level}@anchor{136}
+@anchor{gnat_rm/implementation_defined_aspects aspect-favor-top-level}@anchor{137}
@section Aspect Favor_Top_Level
@geindex Favor_Top_Level
-This boolean aspect is equivalent to @ref{6e,,pragma Favor_Top_Level}.
+This boolean aspect is equivalent to @ref{6f,,pragma Favor_Top_Level}.
@node Aspect Ghost,Aspect Global,Aspect Favor_Top_Level,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-ghost}@anchor{137}
+@anchor{gnat_rm/implementation_defined_aspects aspect-ghost}@anchor{138}
@section Aspect Ghost
@geindex Ghost
-This aspect is equivalent to @ref{71,,pragma Ghost}.
+This aspect is equivalent to @ref{72,,pragma Ghost}.
@node Aspect Global,Aspect Initial_Condition,Aspect Ghost,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-global}@anchor{138}
+@anchor{gnat_rm/implementation_defined_aspects aspect-global}@anchor{139}
@section Aspect Global
@geindex Global
-This aspect is equivalent to @ref{73,,pragma Global}.
+This aspect is equivalent to @ref{74,,pragma Global}.
@node Aspect Initial_Condition,Aspect Initializes,Aspect Global,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-initial-condition}@anchor{139}
+@anchor{gnat_rm/implementation_defined_aspects aspect-initial-condition}@anchor{13a}
@section Aspect Initial_Condition
@geindex Initial_Condition
-This aspect is equivalent to @ref{81,,pragma Initial_Condition}.
+This aspect is equivalent to @ref{82,,pragma Initial_Condition}.
@node Aspect Initializes,Aspect Inline_Always,Aspect Initial_Condition,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-initializes}@anchor{13a}
+@anchor{gnat_rm/implementation_defined_aspects aspect-initializes}@anchor{13b}
@section Aspect Initializes
@geindex Initializes
-This aspect is equivalent to @ref{83,,pragma Initializes}.
+This aspect is equivalent to @ref{84,,pragma Initializes}.
@node Aspect Inline_Always,Aspect Invariant,Aspect Initializes,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-inline-always}@anchor{13b}
+@anchor{gnat_rm/implementation_defined_aspects aspect-inline-always}@anchor{13c}
@section Aspect Inline_Always
@geindex Inline_Always
-This boolean aspect is equivalent to @ref{86,,pragma Inline_Always}.
+This boolean aspect is equivalent to @ref{87,,pragma Inline_Always}.
@node Aspect Invariant,Aspect Invariant'Class,Aspect Inline_Always,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-invariant}@anchor{13c}
+@anchor{gnat_rm/implementation_defined_aspects aspect-invariant}@anchor{13d}
@section Aspect Invariant
@geindex Invariant
-This aspect is equivalent to @ref{8d,,pragma Invariant}. It is a
+This aspect is equivalent to @ref{8e,,pragma Invariant}. It is a
synonym for the language defined aspect @code{Type_Invariant} except
that it is separately controllable using pragma @code{Assertion_Policy}.
@node Aspect Invariant'Class,Aspect Iterable,Aspect Invariant,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-invariant-class}@anchor{13d}
+@anchor{gnat_rm/implementation_defined_aspects aspect-invariant-class}@anchor{13e}
@section Aspect Invariant'Class
@geindex Invariant'Class
-This aspect is equivalent to @ref{106,,pragma Type_Invariant_Class}. It is a
+This aspect is equivalent to @ref{107,,pragma Type_Invariant_Class}. It is a
synonym for the language defined aspect @code{Type_Invariant'Class} except
that it is separately controllable using pragma @code{Assertion_Policy}.
@node Aspect Iterable,Aspect Linker_Section,Aspect Invariant'Class,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-iterable}@anchor{13e}
+@anchor{gnat_rm/implementation_defined_aspects aspect-iterable}@anchor{13f}
@section Aspect Iterable
@@ -9745,117 +9809,117 @@ function Get_Element (Cont : Container; Position : Cursor) return Element_Type;
This aspect is used in the GNAT-defined formal container packages.
@node Aspect Linker_Section,Aspect Lock_Free,Aspect Iterable,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-linker-section}@anchor{13f}
+@anchor{gnat_rm/implementation_defined_aspects aspect-linker-section}@anchor{140}
@section Aspect Linker_Section
@geindex Linker_Section
-This aspect is equivalent to @ref{95,,pragma Linker_Section}.
+This aspect is equivalent to @ref{96,,pragma Linker_Section}.
@node Aspect Lock_Free,Aspect Max_Queue_Length,Aspect Linker_Section,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-lock-free}@anchor{140}
+@anchor{gnat_rm/implementation_defined_aspects aspect-lock-free}@anchor{141}
@section Aspect Lock_Free
@geindex Lock_Free
-This boolean aspect is equivalent to @ref{97,,pragma Lock_Free}.
+This boolean aspect is equivalent to @ref{98,,pragma Lock_Free}.
@node Aspect Max_Queue_Length,Aspect No_Caching,Aspect Lock_Free,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-max-queue-length}@anchor{141}
+@anchor{gnat_rm/implementation_defined_aspects aspect-max-queue-length}@anchor{142}
@section Aspect Max_Queue_Length
@geindex Max_Queue_Length
-This aspect is equivalent to @ref{9f,,pragma Max_Queue_Length}.
+This aspect is equivalent to @ref{a0,,pragma Max_Queue_Length}.
@node Aspect No_Caching,Aspect No_Elaboration_Code_All,Aspect Max_Queue_Length,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-no-caching}@anchor{142}
+@anchor{gnat_rm/implementation_defined_aspects aspect-no-caching}@anchor{143}
@section Aspect No_Caching
@geindex No_Caching
-This boolean aspect is equivalent to @ref{a1,,pragma No_Caching}.
+This boolean aspect is equivalent to @ref{a2,,pragma No_Caching}.
@node Aspect No_Elaboration_Code_All,Aspect No_Inline,Aspect No_Caching,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-no-elaboration-code-all}@anchor{143}
+@anchor{gnat_rm/implementation_defined_aspects aspect-no-elaboration-code-all}@anchor{144}
@section Aspect No_Elaboration_Code_All
@geindex No_Elaboration_Code_All
-This aspect is equivalent to @ref{a5,,pragma No_Elaboration_Code_All}
+This aspect is equivalent to @ref{a6,,pragma No_Elaboration_Code_All}
for a program unit.
@node Aspect No_Inline,Aspect No_Tagged_Streams,Aspect No_Elaboration_Code_All,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-no-inline}@anchor{144}
+@anchor{gnat_rm/implementation_defined_aspects aspect-no-inline}@anchor{145}
@section Aspect No_Inline
@geindex No_Inline
-This boolean aspect is equivalent to @ref{a8,,pragma No_Inline}.
+This boolean aspect is equivalent to @ref{a9,,pragma No_Inline}.
@node Aspect No_Tagged_Streams,Aspect Object_Size,Aspect No_Inline,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-no-tagged-streams}@anchor{145}
+@anchor{gnat_rm/implementation_defined_aspects aspect-no-tagged-streams}@anchor{146}
@section Aspect No_Tagged_Streams
@geindex No_Tagged_Streams
-This aspect is equivalent to @ref{ac,,pragma No_Tagged_Streams} with an
+This aspect is equivalent to @ref{ad,,pragma No_Tagged_Streams} with an
argument specifying a root tagged type (thus this aspect can only be
applied to such a type).
@node Aspect Object_Size,Aspect Obsolescent,Aspect No_Tagged_Streams,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-object-size}@anchor{146}
+@anchor{gnat_rm/implementation_defined_aspects aspect-object-size}@anchor{147}
@section Aspect Object_Size
@geindex Object_Size
-This aspect is equivalent to @ref{147,,attribute Object_Size}.
+This aspect is equivalent to @ref{148,,attribute Object_Size}.
@node Aspect Obsolescent,Aspect Part_Of,Aspect Object_Size,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-obsolescent}@anchor{148}
+@anchor{gnat_rm/implementation_defined_aspects aspect-obsolescent}@anchor{149}
@section Aspect Obsolescent
@geindex Obsolsecent
-This aspect is equivalent to @ref{af,,pragma Obsolescent}. Note that the
+This aspect is equivalent to @ref{b0,,pragma Obsolescent}. Note that the
evaluation of this aspect happens at the point of occurrence, it is not
delayed until the freeze point.
@node Aspect Part_Of,Aspect Persistent_BSS,Aspect Obsolescent,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-part-of}@anchor{149}
+@anchor{gnat_rm/implementation_defined_aspects aspect-part-of}@anchor{14a}
@section Aspect Part_Of
@geindex Part_Of
-This aspect is equivalent to @ref{b7,,pragma Part_Of}.
+This aspect is equivalent to @ref{b8,,pragma Part_Of}.
@node Aspect Persistent_BSS,Aspect Predicate,Aspect Part_Of,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-persistent-bss}@anchor{14a}
+@anchor{gnat_rm/implementation_defined_aspects aspect-persistent-bss}@anchor{14b}
@section Aspect Persistent_BSS
@geindex Persistent_BSS
-This boolean aspect is equivalent to @ref{ba,,pragma Persistent_BSS}.
+This boolean aspect is equivalent to @ref{bb,,pragma Persistent_BSS}.
@node Aspect Predicate,Aspect Pure_Function,Aspect Persistent_BSS,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-predicate}@anchor{14b}
+@anchor{gnat_rm/implementation_defined_aspects aspect-predicate}@anchor{14c}
@section Aspect Predicate
@geindex Predicate
-This aspect is equivalent to @ref{c2,,pragma Predicate}. It is thus
+This aspect is equivalent to @ref{c3,,pragma Predicate}. It is thus
similar to the language defined aspects @code{Dynamic_Predicate}
and @code{Static_Predicate} except that whether the resulting
predicate is static or dynamic is controlled by the form of the
@@ -9863,239 +9927,239 @@ expression. It is also separately controllable using pragma
@code{Assertion_Policy}.
@node Aspect Pure_Function,Aspect Refined_Depends,Aspect Predicate,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-pure-function}@anchor{14c}
+@anchor{gnat_rm/implementation_defined_aspects aspect-pure-function}@anchor{14d}
@section Aspect Pure_Function
@geindex Pure_Function
-This boolean aspect is equivalent to @ref{ce,,pragma Pure_Function}.
+This boolean aspect is equivalent to @ref{cf,,pragma Pure_Function}.
@node Aspect Refined_Depends,Aspect Refined_Global,Aspect Pure_Function,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-refined-depends}@anchor{14d}
+@anchor{gnat_rm/implementation_defined_aspects aspect-refined-depends}@anchor{14e}
@section Aspect Refined_Depends
@geindex Refined_Depends
-This aspect is equivalent to @ref{d2,,pragma Refined_Depends}.
+This aspect is equivalent to @ref{d3,,pragma Refined_Depends}.
@node Aspect Refined_Global,Aspect Refined_Post,Aspect Refined_Depends,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-refined-global}@anchor{14e}
+@anchor{gnat_rm/implementation_defined_aspects aspect-refined-global}@anchor{14f}
@section Aspect Refined_Global
@geindex Refined_Global
-This aspect is equivalent to @ref{d4,,pragma Refined_Global}.
+This aspect is equivalent to @ref{d5,,pragma Refined_Global}.
@node Aspect Refined_Post,Aspect Refined_State,Aspect Refined_Global,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-refined-post}@anchor{14f}
+@anchor{gnat_rm/implementation_defined_aspects aspect-refined-post}@anchor{150}
@section Aspect Refined_Post
@geindex Refined_Post
-This aspect is equivalent to @ref{d6,,pragma Refined_Post}.
+This aspect is equivalent to @ref{d7,,pragma Refined_Post}.
@node Aspect Refined_State,Aspect Remote_Access_Type,Aspect Refined_Post,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-refined-state}@anchor{150}
+@anchor{gnat_rm/implementation_defined_aspects aspect-refined-state}@anchor{151}
@section Aspect Refined_State
@geindex Refined_State
-This aspect is equivalent to @ref{d8,,pragma Refined_State}.
+This aspect is equivalent to @ref{d9,,pragma Refined_State}.
@node Aspect Remote_Access_Type,Aspect Secondary_Stack_Size,Aspect Refined_State,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-remote-access-type}@anchor{151}
+@anchor{gnat_rm/implementation_defined_aspects aspect-remote-access-type}@anchor{152}
@section Aspect Remote_Access_Type
@geindex Remote_Access_Type
-This aspect is equivalent to @ref{dc,,pragma Remote_Access_Type}.
+This aspect is equivalent to @ref{dd,,pragma Remote_Access_Type}.
@node Aspect Secondary_Stack_Size,Aspect Scalar_Storage_Order,Aspect Remote_Access_Type,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-secondary-stack-size}@anchor{152}
+@anchor{gnat_rm/implementation_defined_aspects aspect-secondary-stack-size}@anchor{153}
@section Aspect Secondary_Stack_Size
@geindex Secondary_Stack_Size
-This aspect is equivalent to @ref{e1,,pragma Secondary_Stack_Size}.
+This aspect is equivalent to @ref{e2,,pragma Secondary_Stack_Size}.
@node Aspect Scalar_Storage_Order,Aspect Shared,Aspect Secondary_Stack_Size,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-scalar-storage-order}@anchor{153}
+@anchor{gnat_rm/implementation_defined_aspects aspect-scalar-storage-order}@anchor{154}
@section Aspect Scalar_Storage_Order
@geindex Scalar_Storage_Order
-This aspect is equivalent to a @ref{154,,attribute Scalar_Storage_Order}.
+This aspect is equivalent to a @ref{155,,attribute Scalar_Storage_Order}.
@node Aspect Shared,Aspect Simple_Storage_Pool,Aspect Scalar_Storage_Order,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-shared}@anchor{155}
+@anchor{gnat_rm/implementation_defined_aspects aspect-shared}@anchor{156}
@section Aspect Shared
@geindex Shared
-This boolean aspect is equivalent to @ref{e4,,pragma Shared}
+This boolean aspect is equivalent to @ref{e5,,pragma Shared}
and is thus a synonym for aspect @code{Atomic}.
@node Aspect Simple_Storage_Pool,Aspect Simple_Storage_Pool_Type,Aspect Shared,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool}@anchor{156}
+@anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool}@anchor{157}
@section Aspect Simple_Storage_Pool
@geindex Simple_Storage_Pool
-This aspect is equivalent to @ref{e9,,attribute Simple_Storage_Pool}.
+This aspect is equivalent to @ref{ea,,attribute Simple_Storage_Pool}.
@node Aspect Simple_Storage_Pool_Type,Aspect SPARK_Mode,Aspect Simple_Storage_Pool,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool-type}@anchor{157}
+@anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool-type}@anchor{158}
@section Aspect Simple_Storage_Pool_Type
@geindex Simple_Storage_Pool_Type
-This boolean aspect is equivalent to @ref{e7,,pragma Simple_Storage_Pool_Type}.
+This boolean aspect is equivalent to @ref{e8,,pragma Simple_Storage_Pool_Type}.
@node Aspect SPARK_Mode,Aspect Suppress_Debug_Info,Aspect Simple_Storage_Pool_Type,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-spark-mode}@anchor{158}
+@anchor{gnat_rm/implementation_defined_aspects aspect-spark-mode}@anchor{159}
@section Aspect SPARK_Mode
@geindex SPARK_Mode
-This aspect is equivalent to @ref{ef,,pragma SPARK_Mode} and
+This aspect is equivalent to @ref{f0,,pragma SPARK_Mode} and
may be specified for either or both of the specification and body
of a subprogram or package.
@node Aspect Suppress_Debug_Info,Aspect Suppress_Initialization,Aspect SPARK_Mode,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-suppress-debug-info}@anchor{159}
+@anchor{gnat_rm/implementation_defined_aspects aspect-suppress-debug-info}@anchor{15a}
@section Aspect Suppress_Debug_Info
@geindex Suppress_Debug_Info
-This boolean aspect is equivalent to @ref{f7,,pragma Suppress_Debug_Info}.
+This boolean aspect is equivalent to @ref{f8,,pragma Suppress_Debug_Info}.
@node Aspect Suppress_Initialization,Aspect Test_Case,Aspect Suppress_Debug_Info,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-suppress-initialization}@anchor{15a}
+@anchor{gnat_rm/implementation_defined_aspects aspect-suppress-initialization}@anchor{15b}
@section Aspect Suppress_Initialization
@geindex Suppress_Initialization
-This boolean aspect is equivalent to @ref{fb,,pragma Suppress_Initialization}.
+This boolean aspect is equivalent to @ref{fc,,pragma Suppress_Initialization}.
@node Aspect Test_Case,Aspect Thread_Local_Storage,Aspect Suppress_Initialization,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-test-case}@anchor{15b}
+@anchor{gnat_rm/implementation_defined_aspects aspect-test-case}@anchor{15c}
@section Aspect Test_Case
@geindex Test_Case
-This aspect is equivalent to @ref{fe,,pragma Test_Case}.
+This aspect is equivalent to @ref{ff,,pragma Test_Case}.
@node Aspect Thread_Local_Storage,Aspect Universal_Aliasing,Aspect Test_Case,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-thread-local-storage}@anchor{15c}
+@anchor{gnat_rm/implementation_defined_aspects aspect-thread-local-storage}@anchor{15d}
@section Aspect Thread_Local_Storage
@geindex Thread_Local_Storage
-This boolean aspect is equivalent to @ref{100,,pragma Thread_Local_Storage}.
+This boolean aspect is equivalent to @ref{101,,pragma Thread_Local_Storage}.
@node Aspect Universal_Aliasing,Aspect Universal_Data,Aspect Thread_Local_Storage,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-universal-aliasing}@anchor{15d}
+@anchor{gnat_rm/implementation_defined_aspects aspect-universal-aliasing}@anchor{15e}
@section Aspect Universal_Aliasing
@geindex Universal_Aliasing
-This boolean aspect is equivalent to @ref{10a,,pragma Universal_Aliasing}.
+This boolean aspect is equivalent to @ref{10b,,pragma Universal_Aliasing}.
@node Aspect Universal_Data,Aspect Unmodified,Aspect Universal_Aliasing,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-universal-data}@anchor{15e}
+@anchor{gnat_rm/implementation_defined_aspects aspect-universal-data}@anchor{15f}
@section Aspect Universal_Data
@geindex Universal_Data
-This aspect is equivalent to @ref{10c,,pragma Universal_Data}.
+This aspect is equivalent to @ref{10d,,pragma Universal_Data}.
@node Aspect Unmodified,Aspect Unreferenced,Aspect Universal_Data,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-unmodified}@anchor{15f}
+@anchor{gnat_rm/implementation_defined_aspects aspect-unmodified}@anchor{160}
@section Aspect Unmodified
@geindex Unmodified
-This boolean aspect is equivalent to @ref{10f,,pragma Unmodified}.
+This boolean aspect is equivalent to @ref{110,,pragma Unmodified}.
@node Aspect Unreferenced,Aspect Unreferenced_Objects,Aspect Unmodified,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced}@anchor{160}
+@anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced}@anchor{161}
@section Aspect Unreferenced
@geindex Unreferenced
-This boolean aspect is equivalent to @ref{110,,pragma Unreferenced}. Note that
+This boolean aspect is equivalent to @ref{111,,pragma Unreferenced}. Note that
in the case of formal parameters, it is not permitted to have aspects for
a formal parameter, so in this case the pragma form must be used.
@node Aspect Unreferenced_Objects,Aspect Value_Size,Aspect Unreferenced,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced-objects}@anchor{161}
+@anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced-objects}@anchor{162}
@section Aspect Unreferenced_Objects
@geindex Unreferenced_Objects
-This boolean aspect is equivalent to @ref{112,,pragma Unreferenced_Objects}.
+This boolean aspect is equivalent to @ref{113,,pragma Unreferenced_Objects}.
@node Aspect Value_Size,Aspect Volatile_Full_Access,Aspect Unreferenced_Objects,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-value-size}@anchor{162}
+@anchor{gnat_rm/implementation_defined_aspects aspect-value-size}@anchor{163}
@section Aspect Value_Size
@geindex Value_Size
-This aspect is equivalent to @ref{163,,attribute Value_Size}.
+This aspect is equivalent to @ref{164,,attribute Value_Size}.
@node Aspect Volatile_Full_Access,Aspect Volatile_Function,Aspect Value_Size,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-volatile-full-access}@anchor{164}
+@anchor{gnat_rm/implementation_defined_aspects aspect-volatile-full-access}@anchor{165}
@section Aspect Volatile_Full_Access
@geindex Volatile_Full_Access
-This boolean aspect is equivalent to @ref{11d,,pragma Volatile_Full_Access}.
+This boolean aspect is equivalent to @ref{11e,,pragma Volatile_Full_Access}.
@node Aspect Volatile_Function,Aspect Warnings,Aspect Volatile_Full_Access,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-volatile-function}@anchor{165}
+@anchor{gnat_rm/implementation_defined_aspects aspect-volatile-function}@anchor{166}
@section Aspect Volatile_Function
@geindex Volatile_Function
-This boolean aspect is equivalent to @ref{11f,,pragma Volatile_Function}.
+This boolean aspect is equivalent to @ref{120,,pragma Volatile_Function}.
@node Aspect Warnings,,Aspect Volatile_Function,Implementation Defined Aspects
-@anchor{gnat_rm/implementation_defined_aspects aspect-warnings}@anchor{166}
+@anchor{gnat_rm/implementation_defined_aspects aspect-warnings}@anchor{167}
@section Aspect Warnings
@geindex Warnings
-This aspect is equivalent to the two argument form of @ref{121,,pragma Warnings},
+This aspect is equivalent to the two argument form of @ref{122,,pragma Warnings},
where the first argument is @code{ON} or @code{OFF} and the second argument
is the entity.
@node Implementation Defined Attributes,Standard and Implementation Defined Restrictions,Implementation Defined Aspects,Top
-@anchor{gnat_rm/implementation_defined_attributes doc}@anchor{167}@anchor{gnat_rm/implementation_defined_attributes implementation-defined-attributes}@anchor{8}@anchor{gnat_rm/implementation_defined_attributes id1}@anchor{168}
+@anchor{gnat_rm/implementation_defined_attributes doc}@anchor{168}@anchor{gnat_rm/implementation_defined_attributes implementation-defined-attributes}@anchor{8}@anchor{gnat_rm/implementation_defined_attributes id1}@anchor{169}
@chapter Implementation Defined Attributes
@@ -10196,7 +10260,7 @@ consideration, you should minimize the use of these attributes.
@end menu
@node Attribute Abort_Signal,Attribute Address_Size,,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-abort-signal}@anchor{169}
+@anchor{gnat_rm/implementation_defined_attributes attribute-abort-signal}@anchor{16a}
@section Attribute Abort_Signal
@@ -10210,7 +10274,7 @@ completely outside the normal semantics of Ada, for a user program to
intercept the abort exception).
@node Attribute Address_Size,Attribute Asm_Input,Attribute Abort_Signal,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-address-size}@anchor{16a}
+@anchor{gnat_rm/implementation_defined_attributes attribute-address-size}@anchor{16b}
@section Attribute Address_Size
@@ -10226,7 +10290,7 @@ reference to System.Address'Size is nonstatic because Address
is a private type.
@node Attribute Asm_Input,Attribute Asm_Output,Attribute Address_Size,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-asm-input}@anchor{16b}
+@anchor{gnat_rm/implementation_defined_attributes attribute-asm-input}@anchor{16c}
@section Attribute Asm_Input
@@ -10240,10 +10304,10 @@ to be a static expression, and is the constraint for the parameter,
value to be used as the input argument. The possible values for the
constant are the same as those used in the RTL, and are dependent on
the configuration file used to built the GCC back end.
-@ref{16c,,Machine Code Insertions}
+@ref{16d,,Machine Code Insertions}
@node Attribute Asm_Output,Attribute Atomic_Always_Lock_Free,Attribute Asm_Input,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-asm-output}@anchor{16d}
+@anchor{gnat_rm/implementation_defined_attributes attribute-asm-output}@anchor{16e}
@section Attribute Asm_Output
@@ -10259,10 +10323,10 @@ result. The possible values for constraint are the same as those used in
the RTL, and are dependent on the configuration file used to build the
GCC back end. If there are no output operands, then this argument may
either be omitted, or explicitly given as @code{No_Output_Operands}.
-@ref{16c,,Machine Code Insertions}
+@ref{16d,,Machine Code Insertions}
@node Attribute Atomic_Always_Lock_Free,Attribute Bit,Attribute Asm_Output,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-atomic-always-lock-free}@anchor{16e}
+@anchor{gnat_rm/implementation_defined_attributes attribute-atomic-always-lock-free}@anchor{16f}
@section Attribute Atomic_Always_Lock_Free
@@ -10274,7 +10338,7 @@ and False otherwise. The result indicate whether atomic operations are
supported by the target for the given type.
@node Attribute Bit,Attribute Bit_Position,Attribute Atomic_Always_Lock_Free,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-bit}@anchor{16f}
+@anchor{gnat_rm/implementation_defined_attributes attribute-bit}@anchor{170}
@section Attribute Bit
@@ -10305,7 +10369,7 @@ This attribute is designed to be compatible with the DEC Ada 83 definition
and implementation of the @code{Bit} attribute.
@node Attribute Bit_Position,Attribute Code_Address,Attribute Bit,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-bit-position}@anchor{170}
+@anchor{gnat_rm/implementation_defined_attributes attribute-bit-position}@anchor{171}
@section Attribute Bit_Position
@@ -10320,7 +10384,7 @@ type @emph{universal_integer}. The value depends only on the field
the containing record @code{R}.
@node Attribute Code_Address,Attribute Compiler_Version,Attribute Bit_Position,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-code-address}@anchor{171}
+@anchor{gnat_rm/implementation_defined_attributes attribute-code-address}@anchor{172}
@section Attribute Code_Address
@@ -10363,7 +10427,7 @@ the same value as is returned by the corresponding @code{'Address}
attribute.
@node Attribute Compiler_Version,Attribute Constrained,Attribute Code_Address,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-compiler-version}@anchor{172}
+@anchor{gnat_rm/implementation_defined_attributes attribute-compiler-version}@anchor{173}
@section Attribute Compiler_Version
@@ -10374,7 +10438,7 @@ prefix) yields a static string identifying the version of the compiler
being used to compile the unit containing the attribute reference.
@node Attribute Constrained,Attribute Default_Bit_Order,Attribute Compiler_Version,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-constrained}@anchor{173}
+@anchor{gnat_rm/implementation_defined_attributes attribute-constrained}@anchor{174}
@section Attribute Constrained
@@ -10389,7 +10453,7 @@ record type without discriminants is always @code{True}. This usage is
compatible with older Ada compilers, including notably DEC Ada.
@node Attribute Default_Bit_Order,Attribute Default_Scalar_Storage_Order,Attribute Constrained,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-default-bit-order}@anchor{174}
+@anchor{gnat_rm/implementation_defined_attributes attribute-default-bit-order}@anchor{175}
@section Attribute Default_Bit_Order
@@ -10406,7 +10470,7 @@ as a @code{Pos} value (0 for @code{High_Order_First}, 1 for
@code{Default_Bit_Order} in package @code{System}.
@node Attribute Default_Scalar_Storage_Order,Attribute Deref,Attribute Default_Bit_Order,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-default-scalar-storage-order}@anchor{175}
+@anchor{gnat_rm/implementation_defined_attributes attribute-default-scalar-storage-order}@anchor{176}
@section Attribute Default_Scalar_Storage_Order
@@ -10423,7 +10487,7 @@ equal to @code{Default_Bit_Order} if unspecified) as a
@code{System.Bit_Order} value. This is a static attribute.
@node Attribute Deref,Attribute Descriptor_Size,Attribute Default_Scalar_Storage_Order,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-deref}@anchor{176}
+@anchor{gnat_rm/implementation_defined_attributes attribute-deref}@anchor{177}
@section Attribute Deref
@@ -10436,7 +10500,7 @@ a named access-to-@cite{typ} type, except that it yields a variable, so it can b
used on the left side of an assignment.
@node Attribute Descriptor_Size,Attribute Elaborated,Attribute Deref,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-descriptor-size}@anchor{177}
+@anchor{gnat_rm/implementation_defined_attributes attribute-descriptor-size}@anchor{178}
@section Attribute Descriptor_Size
@@ -10463,7 +10527,7 @@ In the example above, the descriptor contains two values of type
a size of 31 bits and an alignment of 4, the descriptor size is @code{2 * Positive'Size + 2} or 64 bits.
@node Attribute Elaborated,Attribute Elab_Body,Attribute Descriptor_Size,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-elaborated}@anchor{178}
+@anchor{gnat_rm/implementation_defined_attributes attribute-elaborated}@anchor{179}
@section Attribute Elaborated
@@ -10478,7 +10542,7 @@ units has been completed. An exception is for units which need no
elaboration, the value is always False for such units.
@node Attribute Elab_Body,Attribute Elab_Spec,Attribute Elaborated,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-elab-body}@anchor{179}
+@anchor{gnat_rm/implementation_defined_attributes attribute-elab-body}@anchor{17a}
@section Attribute Elab_Body
@@ -10494,7 +10558,7 @@ e.g., if it is necessary to do selective re-elaboration to fix some
error.
@node Attribute Elab_Spec,Attribute Elab_Subp_Body,Attribute Elab_Body,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-elab-spec}@anchor{17a}
+@anchor{gnat_rm/implementation_defined_attributes attribute-elab-spec}@anchor{17b}
@section Attribute Elab_Spec
@@ -10510,7 +10574,7 @@ Ada code, e.g., if it is necessary to do selective re-elaboration to fix
some error.
@node Attribute Elab_Subp_Body,Attribute Emax,Attribute Elab_Spec,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-elab-subp-body}@anchor{17b}
+@anchor{gnat_rm/implementation_defined_attributes attribute-elab-subp-body}@anchor{17c}
@section Attribute Elab_Subp_Body
@@ -10524,7 +10588,7 @@ elaboration procedure by the binder in CodePeer mode only and is unrecognized
otherwise.
@node Attribute Emax,Attribute Enabled,Attribute Elab_Subp_Body,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-emax}@anchor{17c}
+@anchor{gnat_rm/implementation_defined_attributes attribute-emax}@anchor{17d}
@section Attribute Emax
@@ -10537,7 +10601,7 @@ the Ada 83 reference manual for an exact description of the semantics of
this attribute.
@node Attribute Enabled,Attribute Enum_Rep,Attribute Emax,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-enabled}@anchor{17d}
+@anchor{gnat_rm/implementation_defined_attributes attribute-enabled}@anchor{17e}
@section Attribute Enabled
@@ -10561,7 +10625,7 @@ a @code{pragma Suppress} or @code{pragma Unsuppress} before instantiating
the package or subprogram, controlling whether the check will be present.
@node Attribute Enum_Rep,Attribute Enum_Val,Attribute Enabled,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-enum-rep}@anchor{17e}
+@anchor{gnat_rm/implementation_defined_attributes attribute-enum-rep}@anchor{17f}
@section Attribute Enum_Rep
@@ -10598,7 +10662,7 @@ integer calculation is done at run time, then the call to @code{Enum_Rep}
may raise @code{Constraint_Error}.
@node Attribute Enum_Val,Attribute Epsilon,Attribute Enum_Rep,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-enum-val}@anchor{17f}
+@anchor{gnat_rm/implementation_defined_attributes attribute-enum-val}@anchor{180}
@section Attribute Enum_Val
@@ -10621,7 +10685,7 @@ absence of an enumeration representation clause. This is a static
attribute (i.e., the result is static if the argument is static).
@node Attribute Epsilon,Attribute Fast_Math,Attribute Enum_Val,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-epsilon}@anchor{180}
+@anchor{gnat_rm/implementation_defined_attributes attribute-epsilon}@anchor{181}
@section Attribute Epsilon
@@ -10634,7 +10698,7 @@ the Ada 83 reference manual for an exact description of the semantics of
this attribute.
@node Attribute Fast_Math,Attribute Finalization_Size,Attribute Epsilon,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-fast-math}@anchor{181}
+@anchor{gnat_rm/implementation_defined_attributes attribute-fast-math}@anchor{182}
@section Attribute Fast_Math
@@ -10645,7 +10709,7 @@ prefix) yields a static Boolean value that is True if pragma
@code{Fast_Math} is active, and False otherwise.
@node Attribute Finalization_Size,Attribute Fixed_Value,Attribute Fast_Math,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-finalization-size}@anchor{182}
+@anchor{gnat_rm/implementation_defined_attributes attribute-finalization-size}@anchor{183}
@section Attribute Finalization_Size
@@ -10663,7 +10727,7 @@ class-wide type whose tag denotes a type with no controlled parts.
Note that only heap-allocated objects contain finalization data.
@node Attribute Fixed_Value,Attribute From_Any,Attribute Finalization_Size,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-fixed-value}@anchor{183}
+@anchor{gnat_rm/implementation_defined_attributes attribute-fixed-value}@anchor{184}
@section Attribute Fixed_Value
@@ -10690,7 +10754,7 @@ This attribute is primarily intended for use in implementation of the
input-output functions for fixed-point values.
@node Attribute From_Any,Attribute Has_Access_Values,Attribute Fixed_Value,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-from-any}@anchor{184}
+@anchor{gnat_rm/implementation_defined_attributes attribute-from-any}@anchor{185}
@section Attribute From_Any
@@ -10700,7 +10764,7 @@ This internal attribute is used for the generation of remote subprogram
stubs in the context of the Distributed Systems Annex.
@node Attribute Has_Access_Values,Attribute Has_Discriminants,Attribute From_Any,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-has-access-values}@anchor{185}
+@anchor{gnat_rm/implementation_defined_attributes attribute-has-access-values}@anchor{186}
@section Attribute Has_Access_Values
@@ -10718,7 +10782,7 @@ definitions. If the attribute is applied to a generic private type, it
indicates whether or not the corresponding actual type has access values.
@node Attribute Has_Discriminants,Attribute Img,Attribute Has_Access_Values,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-has-discriminants}@anchor{186}
+@anchor{gnat_rm/implementation_defined_attributes attribute-has-discriminants}@anchor{187}
@section Attribute Has_Discriminants
@@ -10734,7 +10798,7 @@ definitions. If the attribute is applied to a generic private type, it
indicates whether or not the corresponding actual type has discriminants.
@node Attribute Img,Attribute Integer_Value,Attribute Has_Discriminants,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-img}@anchor{187}
+@anchor{gnat_rm/implementation_defined_attributes attribute-img}@anchor{188}
@section Attribute Img
@@ -10764,7 +10828,7 @@ that returns the appropriate string when called. This means that
in an instantiation as a function parameter.
@node Attribute Integer_Value,Attribute Invalid_Value,Attribute Img,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-integer-value}@anchor{188}
+@anchor{gnat_rm/implementation_defined_attributes attribute-integer-value}@anchor{189}
@section Attribute Integer_Value
@@ -10792,7 +10856,7 @@ This attribute is primarily intended for use in implementation of the
standard input-output functions for fixed-point values.
@node Attribute Invalid_Value,Attribute Iterable,Attribute Integer_Value,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-invalid-value}@anchor{189}
+@anchor{gnat_rm/implementation_defined_attributes attribute-invalid-value}@anchor{18a}
@section Attribute Invalid_Value
@@ -10806,7 +10870,7 @@ including the ability to modify the value with the binder -Sxx flag and
relevant environment variables at run time.
@node Attribute Iterable,Attribute Large,Attribute Invalid_Value,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-iterable}@anchor{18a}
+@anchor{gnat_rm/implementation_defined_attributes attribute-iterable}@anchor{18b}
@section Attribute Iterable
@@ -10815,7 +10879,7 @@ relevant environment variables at run time.
Equivalent to Aspect Iterable.
@node Attribute Large,Attribute Library_Level,Attribute Iterable,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-large}@anchor{18b}
+@anchor{gnat_rm/implementation_defined_attributes attribute-large}@anchor{18c}
@section Attribute Large
@@ -10828,7 +10892,7 @@ the Ada 83 reference manual for an exact description of the semantics of
this attribute.
@node Attribute Library_Level,Attribute Lock_Free,Attribute Large,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-library-level}@anchor{18c}
+@anchor{gnat_rm/implementation_defined_attributes attribute-library-level}@anchor{18d}
@section Attribute Library_Level
@@ -10854,7 +10918,7 @@ end Gen;
@end example
@node Attribute Lock_Free,Attribute Loop_Entry,Attribute Library_Level,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-lock-free}@anchor{18d}
+@anchor{gnat_rm/implementation_defined_attributes attribute-lock-free}@anchor{18e}
@section Attribute Lock_Free
@@ -10864,7 +10928,7 @@ end Gen;
pragma @code{Lock_Free} applies to P.
@node Attribute Loop_Entry,Attribute Machine_Size,Attribute Lock_Free,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-loop-entry}@anchor{18e}
+@anchor{gnat_rm/implementation_defined_attributes attribute-loop-entry}@anchor{18f}
@section Attribute Loop_Entry
@@ -10894,7 +10958,7 @@ entry. This copy is not performed if the loop is not entered, or if the
corresponding pragmas are ignored or disabled.
@node Attribute Machine_Size,Attribute Mantissa,Attribute Loop_Entry,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-machine-size}@anchor{18f}
+@anchor{gnat_rm/implementation_defined_attributes attribute-machine-size}@anchor{190}
@section Attribute Machine_Size
@@ -10904,7 +10968,7 @@ This attribute is identical to the @code{Object_Size} attribute. It is
provided for compatibility with the DEC Ada 83 attribute of this name.
@node Attribute Mantissa,Attribute Maximum_Alignment,Attribute Machine_Size,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-mantissa}@anchor{190}
+@anchor{gnat_rm/implementation_defined_attributes attribute-mantissa}@anchor{191}
@section Attribute Mantissa
@@ -10917,7 +10981,7 @@ the Ada 83 reference manual for an exact description of the semantics of
this attribute.
@node Attribute Maximum_Alignment,Attribute Mechanism_Code,Attribute Mantissa,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-maximum-alignment}@anchor{191}@anchor{gnat_rm/implementation_defined_attributes id2}@anchor{192}
+@anchor{gnat_rm/implementation_defined_attributes attribute-maximum-alignment}@anchor{192}@anchor{gnat_rm/implementation_defined_attributes id2}@anchor{193}
@section Attribute Maximum_Alignment
@@ -10933,7 +10997,7 @@ for an object, guaranteeing that it is properly aligned in all
cases.
@node Attribute Mechanism_Code,Attribute Null_Parameter,Attribute Maximum_Alignment,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-mechanism-code}@anchor{193}
+@anchor{gnat_rm/implementation_defined_attributes attribute-mechanism-code}@anchor{194}
@section Attribute Mechanism_Code
@@ -10964,7 +11028,7 @@ by reference
@end table
@node Attribute Null_Parameter,Attribute Object_Size,Attribute Mechanism_Code,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-null-parameter}@anchor{194}
+@anchor{gnat_rm/implementation_defined_attributes attribute-null-parameter}@anchor{195}
@section Attribute Null_Parameter
@@ -10989,7 +11053,7 @@ There is no way of indicating this without the @code{Null_Parameter}
attribute.
@node Attribute Object_Size,Attribute Old,Attribute Null_Parameter,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-object-size}@anchor{147}@anchor{gnat_rm/implementation_defined_attributes id3}@anchor{195}
+@anchor{gnat_rm/implementation_defined_attributes attribute-object-size}@anchor{148}@anchor{gnat_rm/implementation_defined_attributes id3}@anchor{196}
@section Attribute Object_Size
@@ -11059,7 +11123,7 @@ Similar additional checks are performed in other contexts requiring
statically matching subtypes.
@node Attribute Old,Attribute Passed_By_Reference,Attribute Object_Size,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-old}@anchor{196}
+@anchor{gnat_rm/implementation_defined_attributes attribute-old}@anchor{197}
@section Attribute Old
@@ -11074,7 +11138,7 @@ definition are allowed under control of
implementation defined pragma @code{Unevaluated_Use_Of_Old}.
@node Attribute Passed_By_Reference,Attribute Pool_Address,Attribute Old,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-passed-by-reference}@anchor{197}
+@anchor{gnat_rm/implementation_defined_attributes attribute-passed-by-reference}@anchor{198}
@section Attribute Passed_By_Reference
@@ -11090,7 +11154,7 @@ passed by copy in calls. For scalar types, the result is always @code{False}
and is static. For non-scalar types, the result is nonstatic.
@node Attribute Pool_Address,Attribute Range_Length,Attribute Passed_By_Reference,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-pool-address}@anchor{198}
+@anchor{gnat_rm/implementation_defined_attributes attribute-pool-address}@anchor{199}
@section Attribute Pool_Address
@@ -11115,7 +11179,7 @@ For an object created by @code{new}, @code{Ptr.all'Pool_Address} is
what is passed to @code{Allocate} and returned from @code{Deallocate}.
@node Attribute Range_Length,Attribute Restriction_Set,Attribute Pool_Address,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-range-length}@anchor{199}
+@anchor{gnat_rm/implementation_defined_attributes attribute-range-length}@anchor{19a}
@section Attribute Range_Length
@@ -11128,7 +11192,7 @@ applied to the index subtype of a one dimensional array always gives the
same result as @code{Length} applied to the array itself.
@node Attribute Restriction_Set,Attribute Result,Attribute Range_Length,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-restriction-set}@anchor{19a}
+@anchor{gnat_rm/implementation_defined_attributes attribute-restriction-set}@anchor{19b}
@section Attribute Restriction_Set
@@ -11198,7 +11262,7 @@ Restrictions pragma, they are not analyzed semantically,
so they do not have a type.
@node Attribute Result,Attribute Safe_Emax,Attribute Restriction_Set,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-result}@anchor{19b}
+@anchor{gnat_rm/implementation_defined_attributes attribute-result}@anchor{19c}
@section Attribute Result
@@ -11211,7 +11275,7 @@ For a further discussion of the use of this attribute and examples of its use,
see the description of pragma Postcondition.
@node Attribute Safe_Emax,Attribute Safe_Large,Attribute Result,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-safe-emax}@anchor{19c}
+@anchor{gnat_rm/implementation_defined_attributes attribute-safe-emax}@anchor{19d}
@section Attribute Safe_Emax
@@ -11224,7 +11288,7 @@ the Ada 83 reference manual for an exact description of the semantics of
this attribute.
@node Attribute Safe_Large,Attribute Safe_Small,Attribute Safe_Emax,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-safe-large}@anchor{19d}
+@anchor{gnat_rm/implementation_defined_attributes attribute-safe-large}@anchor{19e}
@section Attribute Safe_Large
@@ -11237,7 +11301,7 @@ the Ada 83 reference manual for an exact description of the semantics of
this attribute.
@node Attribute Safe_Small,Attribute Scalar_Storage_Order,Attribute Safe_Large,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-safe-small}@anchor{19e}
+@anchor{gnat_rm/implementation_defined_attributes attribute-safe-small}@anchor{19f}
@section Attribute Safe_Small
@@ -11250,7 +11314,7 @@ the Ada 83 reference manual for an exact description of the semantics of
this attribute.
@node Attribute Scalar_Storage_Order,Attribute Simple_Storage_Pool,Attribute Safe_Small,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes id4}@anchor{19f}@anchor{gnat_rm/implementation_defined_attributes attribute-scalar-storage-order}@anchor{154}
+@anchor{gnat_rm/implementation_defined_attributes id4}@anchor{1a0}@anchor{gnat_rm/implementation_defined_attributes attribute-scalar-storage-order}@anchor{155}
@section Attribute Scalar_Storage_Order
@@ -11373,7 +11437,7 @@ Note that debuggers may be unable to display the correct value of scalar
components of a type for which the opposite storage order is specified.
@node Attribute Simple_Storage_Pool,Attribute Small,Attribute Scalar_Storage_Order,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-simple-storage-pool}@anchor{e9}@anchor{gnat_rm/implementation_defined_attributes id5}@anchor{1a0}
+@anchor{gnat_rm/implementation_defined_attributes attribute-simple-storage-pool}@anchor{ea}@anchor{gnat_rm/implementation_defined_attributes id5}@anchor{1a1}
@section Attribute Simple_Storage_Pool
@@ -11436,7 +11500,7 @@ as defined in section 13.11.2 of the Ada Reference Manual, except that the
term @emph{simple storage pool} is substituted for @emph{storage pool}.
@node Attribute Small,Attribute Storage_Unit,Attribute Simple_Storage_Pool,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-small}@anchor{1a1}
+@anchor{gnat_rm/implementation_defined_attributes attribute-small}@anchor{1a2}
@section Attribute Small
@@ -11452,7 +11516,7 @@ the Ada 83 reference manual for an exact description of the semantics of
this attribute when applied to floating-point types.
@node Attribute Storage_Unit,Attribute Stub_Type,Attribute Small,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-storage-unit}@anchor{1a2}
+@anchor{gnat_rm/implementation_defined_attributes attribute-storage-unit}@anchor{1a3}
@section Attribute Storage_Unit
@@ -11462,7 +11526,7 @@ this attribute when applied to floating-point types.
prefix) provides the same value as @code{System.Storage_Unit}.
@node Attribute Stub_Type,Attribute System_Allocator_Alignment,Attribute Storage_Unit,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-stub-type}@anchor{1a3}
+@anchor{gnat_rm/implementation_defined_attributes attribute-stub-type}@anchor{1a4}
@section Attribute Stub_Type
@@ -11486,7 +11550,7 @@ unit @code{System.Partition_Interface}. Use of this attribute will create
an implicit dependency on this unit.
@node Attribute System_Allocator_Alignment,Attribute Target_Name,Attribute Stub_Type,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-system-allocator-alignment}@anchor{1a4}
+@anchor{gnat_rm/implementation_defined_attributes attribute-system-allocator-alignment}@anchor{1a5}
@section Attribute System_Allocator_Alignment
@@ -11503,7 +11567,7 @@ with alignment too large or to enable a realignment circuitry if the
alignment request is larger than this value.
@node Attribute Target_Name,Attribute To_Address,Attribute System_Allocator_Alignment,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-target-name}@anchor{1a5}
+@anchor{gnat_rm/implementation_defined_attributes attribute-target-name}@anchor{1a6}
@section Attribute Target_Name
@@ -11516,7 +11580,7 @@ standard gcc target name without the terminating slash (for
example, GNAT 5.0 on windows yields "i586-pc-mingw32msv").
@node Attribute To_Address,Attribute To_Any,Attribute Target_Name,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-to-address}@anchor{1a6}
+@anchor{gnat_rm/implementation_defined_attributes attribute-to-address}@anchor{1a7}
@section Attribute To_Address
@@ -11539,7 +11603,7 @@ modular manner (e.g., -1 means the same as 16#FFFF_FFFF# on
a 32 bits machine).
@node Attribute To_Any,Attribute Type_Class,Attribute To_Address,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-to-any}@anchor{1a7}
+@anchor{gnat_rm/implementation_defined_attributes attribute-to-any}@anchor{1a8}
@section Attribute To_Any
@@ -11549,7 +11613,7 @@ This internal attribute is used for the generation of remote subprogram
stubs in the context of the Distributed Systems Annex.
@node Attribute Type_Class,Attribute Type_Key,Attribute To_Any,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-type-class}@anchor{1a8}
+@anchor{gnat_rm/implementation_defined_attributes attribute-type-class}@anchor{1a9}
@section Attribute Type_Class
@@ -11579,7 +11643,7 @@ applies to all concurrent types. This attribute is designed to
be compatible with the DEC Ada 83 attribute of the same name.
@node Attribute Type_Key,Attribute TypeCode,Attribute Type_Class,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-type-key}@anchor{1a9}
+@anchor{gnat_rm/implementation_defined_attributes attribute-type-key}@anchor{1aa}
@section Attribute Type_Key
@@ -11591,7 +11655,7 @@ about the type or subtype. This provides improved compatibility with
other implementations that support this attribute.
@node Attribute TypeCode,Attribute Unconstrained_Array,Attribute Type_Key,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-typecode}@anchor{1aa}
+@anchor{gnat_rm/implementation_defined_attributes attribute-typecode}@anchor{1ab}
@section Attribute TypeCode
@@ -11601,7 +11665,7 @@ This internal attribute is used for the generation of remote subprogram
stubs in the context of the Distributed Systems Annex.
@node Attribute Unconstrained_Array,Attribute Universal_Literal_String,Attribute TypeCode,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-unconstrained-array}@anchor{1ab}
+@anchor{gnat_rm/implementation_defined_attributes attribute-unconstrained-array}@anchor{1ac}
@section Attribute Unconstrained_Array
@@ -11615,7 +11679,7 @@ still static, and yields the result of applying this test to the
generic actual.
@node Attribute Universal_Literal_String,Attribute Unrestricted_Access,Attribute Unconstrained_Array,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-universal-literal-string}@anchor{1ac}
+@anchor{gnat_rm/implementation_defined_attributes attribute-universal-literal-string}@anchor{1ad}
@section Attribute Universal_Literal_String
@@ -11643,7 +11707,7 @@ end;
@end example
@node Attribute Unrestricted_Access,Attribute Update,Attribute Universal_Literal_String,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-unrestricted-access}@anchor{1ad}
+@anchor{gnat_rm/implementation_defined_attributes attribute-unrestricted-access}@anchor{1ae}
@section Attribute Unrestricted_Access
@@ -11830,7 +11894,7 @@ In general this is a risky approach. It may appear to "work" but such uses of
of GNAT to another, so are best avoided if possible.
@node Attribute Update,Attribute Valid_Scalars,Attribute Unrestricted_Access,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-update}@anchor{1ae}
+@anchor{gnat_rm/implementation_defined_attributes attribute-update}@anchor{1af}
@section Attribute Update
@@ -11911,7 +11975,7 @@ A := A'Update ((1, 2) => 20, (3, 4) => 30);
which changes element (1,2) to 20 and (3,4) to 30.
@node Attribute Valid_Scalars,Attribute VADS_Size,Attribute Update,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-valid-scalars}@anchor{1af}
+@anchor{gnat_rm/implementation_defined_attributes attribute-valid-scalars}@anchor{1b0}
@section Attribute Valid_Scalars
@@ -11945,7 +12009,7 @@ write a function with a single use of the attribute, and then call that
function from multiple places.
@node Attribute VADS_Size,Attribute Value_Size,Attribute Valid_Scalars,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-vads-size}@anchor{1b0}
+@anchor{gnat_rm/implementation_defined_attributes attribute-vads-size}@anchor{1b1}
@section Attribute VADS_Size
@@ -11965,7 +12029,7 @@ gives the result that would be obtained by applying the attribute to
the corresponding type.
@node Attribute Value_Size,Attribute Wchar_T_Size,Attribute VADS_Size,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes id6}@anchor{1b1}@anchor{gnat_rm/implementation_defined_attributes attribute-value-size}@anchor{163}
+@anchor{gnat_rm/implementation_defined_attributes id6}@anchor{1b2}@anchor{gnat_rm/implementation_defined_attributes attribute-value-size}@anchor{164}
@section Attribute Value_Size
@@ -11979,7 +12043,7 @@ a value of the given subtype. It is the same as @code{type'Size},
but, unlike @code{Size}, may be set for non-first subtypes.
@node Attribute Wchar_T_Size,Attribute Word_Size,Attribute Value_Size,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-wchar-t-size}@anchor{1b2}
+@anchor{gnat_rm/implementation_defined_attributes attribute-wchar-t-size}@anchor{1b3}
@section Attribute Wchar_T_Size
@@ -11991,7 +12055,7 @@ primarily for constructing the definition of this type in
package @code{Interfaces.C}. The result is a static constant.
@node Attribute Word_Size,,Attribute Wchar_T_Size,Implementation Defined Attributes
-@anchor{gnat_rm/implementation_defined_attributes attribute-word-size}@anchor{1b3}
+@anchor{gnat_rm/implementation_defined_attributes attribute-word-size}@anchor{1b4}
@section Attribute Word_Size
@@ -12002,7 +12066,7 @@ prefix) provides the value @code{System.Word_Size}. The result is
a static constant.
@node Standard and Implementation Defined Restrictions,Implementation Advice,Implementation Defined Attributes,Top
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions standard-and-implementation-defined-restrictions}@anchor{9}@anchor{gnat_rm/standard_and_implementation_defined_restrictions doc}@anchor{1b4}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id1}@anchor{1b5}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions standard-and-implementation-defined-restrictions}@anchor{9}@anchor{gnat_rm/standard_and_implementation_defined_restrictions doc}@anchor{1b5}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id1}@anchor{1b6}
@chapter Standard and Implementation Defined Restrictions
@@ -12031,7 +12095,7 @@ language defined or GNAT-specific, are listed in the following.
@end menu
@node Partition-Wide Restrictions,Program Unit Level Restrictions,,Standard and Implementation Defined Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions partition-wide-restrictions}@anchor{1b6}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id2}@anchor{1b7}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions partition-wide-restrictions}@anchor{1b7}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id2}@anchor{1b8}
@section Partition-Wide Restrictions
@@ -12120,7 +12184,7 @@ then all compilation units in the partition must obey the restriction).
@end menu
@node Immediate_Reclamation,Max_Asynchronous_Select_Nesting,,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions immediate-reclamation}@anchor{1b8}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions immediate-reclamation}@anchor{1b9}
@subsection Immediate_Reclamation
@@ -12132,7 +12196,7 @@ deallocation, any storage reserved at run time for an object is
immediately reclaimed when the object no longer exists.
@node Max_Asynchronous_Select_Nesting,Max_Entry_Queue_Length,Immediate_Reclamation,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-asynchronous-select-nesting}@anchor{1b9}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-asynchronous-select-nesting}@anchor{1ba}
@subsection Max_Asynchronous_Select_Nesting
@@ -12144,7 +12208,7 @@ detected at compile time. Violations of this restriction with values
other than zero cause Storage_Error to be raised.
@node Max_Entry_Queue_Length,Max_Protected_Entries,Max_Asynchronous_Select_Nesting,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-entry-queue-length}@anchor{1ba}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-entry-queue-length}@anchor{1bb}
@subsection Max_Entry_Queue_Length
@@ -12165,7 +12229,7 @@ compatibility purposes (and a warning will be generated for its use if
warnings on obsolescent features are activated).
@node Max_Protected_Entries,Max_Select_Alternatives,Max_Entry_Queue_Length,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-protected-entries}@anchor{1bb}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-protected-entries}@anchor{1bc}
@subsection Max_Protected_Entries
@@ -12176,7 +12240,7 @@ bounds of every entry family of a protected unit shall be static, or shall be
defined by a discriminant of a subtype whose corresponding bound is static.
@node Max_Select_Alternatives,Max_Storage_At_Blocking,Max_Protected_Entries,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-select-alternatives}@anchor{1bc}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-select-alternatives}@anchor{1bd}
@subsection Max_Select_Alternatives
@@ -12185,7 +12249,7 @@ defined by a discriminant of a subtype whose corresponding bound is static.
[RM D.7] Specifies the maximum number of alternatives in a selective accept.
@node Max_Storage_At_Blocking,Max_Task_Entries,Max_Select_Alternatives,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-storage-at-blocking}@anchor{1bd}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-storage-at-blocking}@anchor{1be}
@subsection Max_Storage_At_Blocking
@@ -12196,7 +12260,7 @@ Storage_Size that can be retained by a blocked task. A violation of this
restriction causes Storage_Error to be raised.
@node Max_Task_Entries,Max_Tasks,Max_Storage_At_Blocking,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-task-entries}@anchor{1be}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-task-entries}@anchor{1bf}
@subsection Max_Task_Entries
@@ -12209,7 +12273,7 @@ defined by a discriminant of a subtype whose
corresponding bound is static.
@node Max_Tasks,No_Abort_Statements,Max_Task_Entries,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-tasks}@anchor{1bf}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-tasks}@anchor{1c0}
@subsection Max_Tasks
@@ -12222,7 +12286,7 @@ time. Violations of this restriction with values other than zero cause
Storage_Error to be raised.
@node No_Abort_Statements,No_Access_Parameter_Allocators,Max_Tasks,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-abort-statements}@anchor{1c0}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-abort-statements}@anchor{1c1}
@subsection No_Abort_Statements
@@ -12232,7 +12296,7 @@ Storage_Error to be raised.
no calls to Task_Identification.Abort_Task.
@node No_Access_Parameter_Allocators,No_Access_Subprograms,No_Abort_Statements,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-parameter-allocators}@anchor{1c1}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-parameter-allocators}@anchor{1c2}
@subsection No_Access_Parameter_Allocators
@@ -12243,7 +12307,7 @@ occurrences of an allocator as the actual parameter to an access
parameter.
@node No_Access_Subprograms,No_Allocators,No_Access_Parameter_Allocators,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-subprograms}@anchor{1c2}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-subprograms}@anchor{1c3}
@subsection No_Access_Subprograms
@@ -12253,7 +12317,7 @@ parameter.
declarations of access-to-subprogram types.
@node No_Allocators,No_Anonymous_Allocators,No_Access_Subprograms,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-allocators}@anchor{1c3}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-allocators}@anchor{1c4}
@subsection No_Allocators
@@ -12263,7 +12327,7 @@ declarations of access-to-subprogram types.
occurrences of an allocator.
@node No_Anonymous_Allocators,No_Asynchronous_Control,No_Allocators,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-anonymous-allocators}@anchor{1c4}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-anonymous-allocators}@anchor{1c5}
@subsection No_Anonymous_Allocators
@@ -12273,7 +12337,7 @@ occurrences of an allocator.
occurrences of an allocator of anonymous access type.
@node No_Asynchronous_Control,No_Calendar,No_Anonymous_Allocators,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-asynchronous-control}@anchor{1c5}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-asynchronous-control}@anchor{1c6}
@subsection No_Asynchronous_Control
@@ -12283,7 +12347,7 @@ occurrences of an allocator of anonymous access type.
dependences on the predefined package Asynchronous_Task_Control.
@node No_Calendar,No_Coextensions,No_Asynchronous_Control,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-calendar}@anchor{1c6}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-calendar}@anchor{1c7}
@subsection No_Calendar
@@ -12293,7 +12357,7 @@ dependences on the predefined package Asynchronous_Task_Control.
dependences on package Calendar.
@node No_Coextensions,No_Default_Initialization,No_Calendar,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-coextensions}@anchor{1c7}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-coextensions}@anchor{1c8}
@subsection No_Coextensions
@@ -12303,7 +12367,7 @@ dependences on package Calendar.
coextensions. See 3.10.2.
@node No_Default_Initialization,No_Delay,No_Coextensions,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-default-initialization}@anchor{1c8}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-default-initialization}@anchor{1c9}
@subsection No_Default_Initialization
@@ -12320,7 +12384,7 @@ is to prohibit all cases of variables declared without a specific
initializer (including the case of OUT scalar parameters).
@node No_Delay,No_Dependence,No_Default_Initialization,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-delay}@anchor{1c9}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-delay}@anchor{1ca}
@subsection No_Delay
@@ -12330,7 +12394,7 @@ initializer (including the case of OUT scalar parameters).
delay statements and no semantic dependences on package Calendar.
@node No_Dependence,No_Direct_Boolean_Operators,No_Delay,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dependence}@anchor{1ca}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dependence}@anchor{1cb}
@subsection No_Dependence
@@ -12340,7 +12404,7 @@ delay statements and no semantic dependences on package Calendar.
dependences on a library unit.
@node No_Direct_Boolean_Operators,No_Dispatch,No_Dependence,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-direct-boolean-operators}@anchor{1cb}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-direct-boolean-operators}@anchor{1cc}
@subsection No_Direct_Boolean_Operators
@@ -12353,7 +12417,7 @@ protocol requires the use of short-circuit (and then, or else) forms for all
composite boolean operations.
@node No_Dispatch,No_Dispatching_Calls,No_Direct_Boolean_Operators,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatch}@anchor{1cc}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatch}@anchor{1cd}
@subsection No_Dispatch
@@ -12363,7 +12427,7 @@ composite boolean operations.
occurrences of @code{T'Class}, for any (tagged) subtype @code{T}.
@node No_Dispatching_Calls,No_Dynamic_Attachment,No_Dispatch,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatching-calls}@anchor{1cd}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatching-calls}@anchor{1ce}
@subsection No_Dispatching_Calls
@@ -12424,7 +12488,7 @@ end Example;
@end example
@node No_Dynamic_Attachment,No_Dynamic_Priorities,No_Dispatching_Calls,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-attachment}@anchor{1ce}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-attachment}@anchor{1cf}
@subsection No_Dynamic_Attachment
@@ -12443,7 +12507,7 @@ compatibility purposes (and a warning will be generated for its use if
warnings on obsolescent features are activated).
@node No_Dynamic_Priorities,No_Entry_Calls_In_Elaboration_Code,No_Dynamic_Attachment,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-priorities}@anchor{1cf}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-priorities}@anchor{1d0}
@subsection No_Dynamic_Priorities
@@ -12452,7 +12516,7 @@ warnings on obsolescent features are activated).
[RM D.7] There are no semantic dependencies on the package Dynamic_Priorities.
@node No_Entry_Calls_In_Elaboration_Code,No_Enumeration_Maps,No_Dynamic_Priorities,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-calls-in-elaboration-code}@anchor{1d0}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-calls-in-elaboration-code}@anchor{1d1}
@subsection No_Entry_Calls_In_Elaboration_Code
@@ -12464,7 +12528,7 @@ restriction, the compiler can assume that no code past an accept statement
in a task can be executed at elaboration time.
@node No_Enumeration_Maps,No_Exception_Handlers,No_Entry_Calls_In_Elaboration_Code,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-enumeration-maps}@anchor{1d1}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-enumeration-maps}@anchor{1d2}
@subsection No_Enumeration_Maps
@@ -12475,7 +12539,7 @@ enumeration maps are used (that is Image and Value attributes applied
to enumeration types).
@node No_Exception_Handlers,No_Exception_Propagation,No_Enumeration_Maps,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-handlers}@anchor{1d2}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-handlers}@anchor{1d3}
@subsection No_Exception_Handlers
@@ -12500,7 +12564,7 @@ statement generated by the compiler). The Line parameter when nonzero
represents the line number in the source program where the raise occurs.
@node No_Exception_Propagation,No_Exception_Registration,No_Exception_Handlers,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-propagation}@anchor{1d3}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-propagation}@anchor{1d4}
@subsection No_Exception_Propagation
@@ -12517,7 +12581,7 @@ the package GNAT.Current_Exception is not permitted, and reraise
statements (raise with no operand) are not permitted.
@node No_Exception_Registration,No_Exceptions,No_Exception_Propagation,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-registration}@anchor{1d4}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-registration}@anchor{1d5}
@subsection No_Exception_Registration
@@ -12531,7 +12595,7 @@ code is simplified by omitting the otherwise-required global registration
of exceptions when they are declared.
@node No_Exceptions,No_Finalization,No_Exception_Registration,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exceptions}@anchor{1d5}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exceptions}@anchor{1d6}
@subsection No_Exceptions
@@ -12542,7 +12606,7 @@ raise statements and no exception handlers and also suppresses the
generation of language-defined run-time checks.
@node No_Finalization,No_Fixed_Point,No_Exceptions,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-finalization}@anchor{1d6}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-finalization}@anchor{1d7}
@subsection No_Finalization
@@ -12583,7 +12647,7 @@ object or a nested component, either declared on the stack or on the heap. The
deallocation of a controlled object no longer finalizes its contents.
@node No_Fixed_Point,No_Floating_Point,No_Finalization,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-fixed-point}@anchor{1d7}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-fixed-point}@anchor{1d8}
@subsection No_Fixed_Point
@@ -12593,7 +12657,7 @@ deallocation of a controlled object no longer finalizes its contents.
occurrences of fixed point types and operations.
@node No_Floating_Point,No_Implicit_Conditionals,No_Fixed_Point,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-floating-point}@anchor{1d8}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-floating-point}@anchor{1d9}
@subsection No_Floating_Point
@@ -12603,7 +12667,7 @@ occurrences of fixed point types and operations.
occurrences of floating point types and operations.
@node No_Implicit_Conditionals,No_Implicit_Dynamic_Code,No_Floating_Point,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-conditionals}@anchor{1d9}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-conditionals}@anchor{1da}
@subsection No_Implicit_Conditionals
@@ -12619,7 +12683,7 @@ normal manner. Constructs generating implicit conditionals include comparisons
of composite objects and the Max/Min attributes.
@node No_Implicit_Dynamic_Code,No_Implicit_Heap_Allocations,No_Implicit_Conditionals,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-dynamic-code}@anchor{1da}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-dynamic-code}@anchor{1db}
@subsection No_Implicit_Dynamic_Code
@@ -12649,7 +12713,7 @@ foreign-language convention; primitive operations of nested tagged
types.
@node No_Implicit_Heap_Allocations,No_Implicit_Protected_Object_Allocations,No_Implicit_Dynamic_Code,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-heap-allocations}@anchor{1db}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-heap-allocations}@anchor{1dc}
@subsection No_Implicit_Heap_Allocations
@@ -12658,7 +12722,7 @@ types.
[RM D.7] No constructs are allowed to cause implicit heap allocation.
@node No_Implicit_Protected_Object_Allocations,No_Implicit_Task_Allocations,No_Implicit_Heap_Allocations,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-protected-object-allocations}@anchor{1dc}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-protected-object-allocations}@anchor{1dd}
@subsection No_Implicit_Protected_Object_Allocations
@@ -12668,7 +12732,7 @@ types.
protected object.
@node No_Implicit_Task_Allocations,No_Initialize_Scalars,No_Implicit_Protected_Object_Allocations,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-task-allocations}@anchor{1dd}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-task-allocations}@anchor{1de}
@subsection No_Implicit_Task_Allocations
@@ -12677,7 +12741,7 @@ protected object.
[GNAT] No constructs are allowed to cause implicit heap allocation of a task.
@node No_Initialize_Scalars,No_IO,No_Implicit_Task_Allocations,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-initialize-scalars}@anchor{1de}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-initialize-scalars}@anchor{1df}
@subsection No_Initialize_Scalars
@@ -12689,7 +12753,7 @@ code, and in particular eliminates dummy null initialization routines that
are otherwise generated for some record and array types.
@node No_IO,No_Local_Allocators,No_Initialize_Scalars,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-io}@anchor{1df}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-io}@anchor{1e0}
@subsection No_IO
@@ -12700,7 +12764,7 @@ dependences on any of the library units Sequential_IO, Direct_IO,
Text_IO, Wide_Text_IO, Wide_Wide_Text_IO, or Stream_IO.
@node No_Local_Allocators,No_Local_Protected_Objects,No_IO,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-allocators}@anchor{1e0}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-allocators}@anchor{1e1}
@subsection No_Local_Allocators
@@ -12711,7 +12775,7 @@ occurrences of an allocator in subprograms, generic subprograms, tasks,
and entry bodies.
@node No_Local_Protected_Objects,No_Local_Timing_Events,No_Local_Allocators,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-protected-objects}@anchor{1e1}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-protected-objects}@anchor{1e2}
@subsection No_Local_Protected_Objects
@@ -12721,7 +12785,7 @@ and entry bodies.
only declared at the library level.
@node No_Local_Timing_Events,No_Long_Long_Integers,No_Local_Protected_Objects,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-timing-events}@anchor{1e2}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-timing-events}@anchor{1e3}
@subsection No_Local_Timing_Events
@@ -12731,7 +12795,7 @@ only declared at the library level.
declared at the library level.
@node No_Long_Long_Integers,No_Multiple_Elaboration,No_Local_Timing_Events,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-long-long-integers}@anchor{1e3}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-long-long-integers}@anchor{1e4}
@subsection No_Long_Long_Integers
@@ -12743,7 +12807,7 @@ implicit base type is Long_Long_Integer, and modular types whose size exceeds
Long_Integer'Size.
@node No_Multiple_Elaboration,No_Nested_Finalization,No_Long_Long_Integers,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-multiple-elaboration}@anchor{1e4}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-multiple-elaboration}@anchor{1e5}
@subsection No_Multiple_Elaboration
@@ -12759,7 +12823,7 @@ possible, including non-Ada main programs and Stand Alone libraries, are not
permitted and will be diagnosed by the binder.
@node No_Nested_Finalization,No_Protected_Type_Allocators,No_Multiple_Elaboration,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-nested-finalization}@anchor{1e5}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-nested-finalization}@anchor{1e6}
@subsection No_Nested_Finalization
@@ -12768,7 +12832,7 @@ permitted and will be diagnosed by the binder.
[RM D.7] All objects requiring finalization are declared at the library level.
@node No_Protected_Type_Allocators,No_Protected_Types,No_Nested_Finalization,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-type-allocators}@anchor{1e6}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-type-allocators}@anchor{1e7}
@subsection No_Protected_Type_Allocators
@@ -12778,7 +12842,7 @@ permitted and will be diagnosed by the binder.
expressions that attempt to allocate protected objects.
@node No_Protected_Types,No_Recursion,No_Protected_Type_Allocators,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-types}@anchor{1e7}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-types}@anchor{1e8}
@subsection No_Protected_Types
@@ -12788,7 +12852,7 @@ expressions that attempt to allocate protected objects.
declarations of protected types or protected objects.
@node No_Recursion,No_Reentrancy,No_Protected_Types,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-recursion}@anchor{1e8}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-recursion}@anchor{1e9}
@subsection No_Recursion
@@ -12798,7 +12862,7 @@ declarations of protected types or protected objects.
part of its execution.
@node No_Reentrancy,No_Relative_Delay,No_Recursion,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-reentrancy}@anchor{1e9}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-reentrancy}@anchor{1ea}
@subsection No_Reentrancy
@@ -12808,7 +12872,7 @@ part of its execution.
two tasks at the same time.
@node No_Relative_Delay,No_Requeue_Statements,No_Reentrancy,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-relative-delay}@anchor{1ea}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-relative-delay}@anchor{1eb}
@subsection No_Relative_Delay
@@ -12819,7 +12883,7 @@ relative statements and prevents expressions such as @code{delay 1.23;} from
appearing in source code.
@node No_Requeue_Statements,No_Secondary_Stack,No_Relative_Delay,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-requeue-statements}@anchor{1eb}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-requeue-statements}@anchor{1ec}
@subsection No_Requeue_Statements
@@ -12837,7 +12901,7 @@ compatibility purposes (and a warning will be generated for its use if
warnings on oNobsolescent features are activated).
@node No_Secondary_Stack,No_Select_Statements,No_Requeue_Statements,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-secondary-stack}@anchor{1ec}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-secondary-stack}@anchor{1ed}
@subsection No_Secondary_Stack
@@ -12850,7 +12914,7 @@ stack is used to implement functions returning unconstrained objects
secondary stacks for tasks (excluding the environment task) at run time.
@node No_Select_Statements,No_Specific_Termination_Handlers,No_Secondary_Stack,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-select-statements}@anchor{1ed}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-select-statements}@anchor{1ee}
@subsection No_Select_Statements
@@ -12860,7 +12924,7 @@ secondary stacks for tasks (excluding the environment task) at run time.
kind are permitted, that is the keyword @code{select} may not appear.
@node No_Specific_Termination_Handlers,No_Specification_of_Aspect,No_Select_Statements,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specific-termination-handlers}@anchor{1ee}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specific-termination-handlers}@anchor{1ef}
@subsection No_Specific_Termination_Handlers
@@ -12870,7 +12934,7 @@ kind are permitted, that is the keyword @code{select} may not appear.
or to Ada.Task_Termination.Specific_Handler.
@node No_Specification_of_Aspect,No_Standard_Allocators_After_Elaboration,No_Specific_Termination_Handlers,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specification-of-aspect}@anchor{1ef}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specification-of-aspect}@anchor{1f0}
@subsection No_Specification_of_Aspect
@@ -12881,7 +12945,7 @@ specification, attribute definition clause, or pragma is given for a
given aspect.
@node No_Standard_Allocators_After_Elaboration,No_Standard_Storage_Pools,No_Specification_of_Aspect,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-allocators-after-elaboration}@anchor{1f0}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-allocators-after-elaboration}@anchor{1f1}
@subsection No_Standard_Allocators_After_Elaboration
@@ -12893,7 +12957,7 @@ library items of the partition has completed. Otherwise, Storage_Error
is raised.
@node No_Standard_Storage_Pools,No_Stream_Optimizations,No_Standard_Allocators_After_Elaboration,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-storage-pools}@anchor{1f1}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-storage-pools}@anchor{1f2}
@subsection No_Standard_Storage_Pools
@@ -12905,7 +12969,7 @@ have an explicit Storage_Pool attribute defined specifying a
user-defined storage pool.
@node No_Stream_Optimizations,No_Streams,No_Standard_Storage_Pools,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-stream-optimizations}@anchor{1f2}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-stream-optimizations}@anchor{1f3}
@subsection No_Stream_Optimizations
@@ -12918,7 +12982,7 @@ due to their superior performance. When this restriction is in effect, the
compiler performs all IO operations on a per-character basis.
@node No_Streams,No_Task_Allocators,No_Stream_Optimizations,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-streams}@anchor{1f3}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-streams}@anchor{1f4}
@subsection No_Streams
@@ -12939,7 +13003,7 @@ unit declaring a tagged type should be compiled with the restriction,
though this is not required.
@node No_Task_Allocators,No_Task_At_Interrupt_Priority,No_Streams,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-allocators}@anchor{1f4}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-allocators}@anchor{1f5}
@subsection No_Task_Allocators
@@ -12949,7 +13013,7 @@ though this is not required.
or types containing task subcomponents.
@node No_Task_At_Interrupt_Priority,No_Task_Attributes_Package,No_Task_Allocators,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-at-interrupt-priority}@anchor{1f5}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-at-interrupt-priority}@anchor{1f6}
@subsection No_Task_At_Interrupt_Priority
@@ -12961,7 +13025,7 @@ a consequence, the tasks are always created with a priority below
that an interrupt priority.
@node No_Task_Attributes_Package,No_Task_Hierarchy,No_Task_At_Interrupt_Priority,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-attributes-package}@anchor{1f6}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-attributes-package}@anchor{1f7}
@subsection No_Task_Attributes_Package
@@ -12978,7 +13042,7 @@ compatibility purposes (and a warning will be generated for its use if
warnings on obsolescent features are activated).
@node No_Task_Hierarchy,No_Task_Termination,No_Task_Attributes_Package,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-hierarchy}@anchor{1f7}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-hierarchy}@anchor{1f8}
@subsection No_Task_Hierarchy
@@ -12988,7 +13052,7 @@ warnings on obsolescent features are activated).
directly on the environment task of the partition.
@node No_Task_Termination,No_Tasking,No_Task_Hierarchy,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-termination}@anchor{1f8}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-termination}@anchor{1f9}
@subsection No_Task_Termination
@@ -12997,7 +13061,7 @@ directly on the environment task of the partition.
[RM D.7] Tasks that terminate are erroneous.
@node No_Tasking,No_Terminate_Alternatives,No_Task_Termination,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tasking}@anchor{1f9}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tasking}@anchor{1fa}
@subsection No_Tasking
@@ -13010,7 +13074,7 @@ and cause an error message to be output either by the compiler or
binder.
@node No_Terminate_Alternatives,No_Unchecked_Access,No_Tasking,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-terminate-alternatives}@anchor{1fa}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-terminate-alternatives}@anchor{1fb}
@subsection No_Terminate_Alternatives
@@ -13019,7 +13083,7 @@ binder.
[RM D.7] There are no selective accepts with terminate alternatives.
@node No_Unchecked_Access,No_Unchecked_Conversion,No_Terminate_Alternatives,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-access}@anchor{1fb}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-access}@anchor{1fc}
@subsection No_Unchecked_Access
@@ -13029,7 +13093,7 @@ binder.
occurrences of the Unchecked_Access attribute.
@node No_Unchecked_Conversion,No_Unchecked_Deallocation,No_Unchecked_Access,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-conversion}@anchor{1fc}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-conversion}@anchor{1fd}
@subsection No_Unchecked_Conversion
@@ -13039,7 +13103,7 @@ occurrences of the Unchecked_Access attribute.
dependences on the predefined generic function Unchecked_Conversion.
@node No_Unchecked_Deallocation,No_Use_Of_Entity,No_Unchecked_Conversion,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-deallocation}@anchor{1fd}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-deallocation}@anchor{1fe}
@subsection No_Unchecked_Deallocation
@@ -13049,7 +13113,7 @@ dependences on the predefined generic function Unchecked_Conversion.
dependences on the predefined generic procedure Unchecked_Deallocation.
@node No_Use_Of_Entity,Pure_Barriers,No_Unchecked_Deallocation,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-entity}@anchor{1fe}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-entity}@anchor{1ff}
@subsection No_Use_Of_Entity
@@ -13069,7 +13133,7 @@ No_Use_Of_Entity => Ada.Text_IO.Put_Line
@end example
@node Pure_Barriers,Simple_Barriers,No_Use_Of_Entity,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions pure-barriers}@anchor{1ff}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions pure-barriers}@anchor{200}
@subsection Pure_Barriers
@@ -13120,7 +13184,7 @@ but still ensures absence of side effects, exceptions, and recursion
during the evaluation of the barriers.
@node Simple_Barriers,Static_Priorities,Pure_Barriers,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions simple-barriers}@anchor{200}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions simple-barriers}@anchor{201}
@subsection Simple_Barriers
@@ -13139,7 +13203,7 @@ compatibility purposes (and a warning will be generated for its use if
warnings on obsolescent features are activated).
@node Static_Priorities,Static_Storage_Size,Simple_Barriers,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-priorities}@anchor{201}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-priorities}@anchor{202}
@subsection Static_Priorities
@@ -13150,7 +13214,7 @@ are static, and that there are no dependences on the package
@code{Ada.Dynamic_Priorities}.
@node Static_Storage_Size,,Static_Priorities,Partition-Wide Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-storage-size}@anchor{202}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-storage-size}@anchor{203}
@subsection Static_Storage_Size
@@ -13160,7 +13224,7 @@ are static, and that there are no dependences on the package
in a Storage_Size pragma or attribute definition clause is static.
@node Program Unit Level Restrictions,,Partition-Wide Restrictions,Standard and Implementation Defined Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions program-unit-level-restrictions}@anchor{203}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id3}@anchor{204}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions program-unit-level-restrictions}@anchor{204}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id3}@anchor{205}
@section Program Unit Level Restrictions
@@ -13190,7 +13254,7 @@ other compilation units in the partition.
@end menu
@node No_Elaboration_Code,No_Dynamic_Sized_Objects,,Program Unit Level Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-elaboration-code}@anchor{205}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-elaboration-code}@anchor{206}
@subsection No_Elaboration_Code
@@ -13246,7 +13310,7 @@ associated with the unit. This counter is typically used to check for access
before elaboration and to control multiple elaboration attempts.
@node No_Dynamic_Sized_Objects,No_Entry_Queue,No_Elaboration_Code,Program Unit Level Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-sized-objects}@anchor{206}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-sized-objects}@anchor{207}
@subsection No_Dynamic_Sized_Objects
@@ -13264,7 +13328,7 @@ access discriminants. It is often a good idea to combine this restriction
with No_Secondary_Stack.
@node No_Entry_Queue,No_Implementation_Aspect_Specifications,No_Dynamic_Sized_Objects,Program Unit Level Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-queue}@anchor{207}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-queue}@anchor{208}
@subsection No_Entry_Queue
@@ -13277,7 +13341,7 @@ checked at compile time. A program execution is erroneous if an attempt
is made to queue a second task on such an entry.
@node No_Implementation_Aspect_Specifications,No_Implementation_Attributes,No_Entry_Queue,Program Unit Level Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-aspect-specifications}@anchor{208}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-aspect-specifications}@anchor{209}
@subsection No_Implementation_Aspect_Specifications
@@ -13288,7 +13352,7 @@ GNAT-defined aspects are present. With this restriction, the only
aspects that can be used are those defined in the Ada Reference Manual.
@node No_Implementation_Attributes,No_Implementation_Identifiers,No_Implementation_Aspect_Specifications,Program Unit Level Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-attributes}@anchor{209}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-attributes}@anchor{20a}
@subsection No_Implementation_Attributes
@@ -13300,7 +13364,7 @@ attributes that can be used are those defined in the Ada Reference
Manual.
@node No_Implementation_Identifiers,No_Implementation_Pragmas,No_Implementation_Attributes,Program Unit Level Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-identifiers}@anchor{20a}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-identifiers}@anchor{20b}
@subsection No_Implementation_Identifiers
@@ -13311,7 +13375,7 @@ implementation-defined identifiers (marked with pragma Implementation_Defined)
occur within language-defined packages.
@node No_Implementation_Pragmas,No_Implementation_Restrictions,No_Implementation_Identifiers,Program Unit Level Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-pragmas}@anchor{20b}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-pragmas}@anchor{20c}
@subsection No_Implementation_Pragmas
@@ -13322,7 +13386,7 @@ GNAT-defined pragmas are present. With this restriction, the only
pragmas that can be used are those defined in the Ada Reference Manual.
@node No_Implementation_Restrictions,No_Implementation_Units,No_Implementation_Pragmas,Program Unit Level Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-restrictions}@anchor{20c}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-restrictions}@anchor{20d}
@subsection No_Implementation_Restrictions
@@ -13334,7 +13398,7 @@ are present. With this restriction, the only other restriction identifiers
that can be used are those defined in the Ada Reference Manual.
@node No_Implementation_Units,No_Implicit_Aliasing,No_Implementation_Restrictions,Program Unit Level Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-units}@anchor{20d}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-units}@anchor{20e}
@subsection No_Implementation_Units
@@ -13345,7 +13409,7 @@ mention in the context clause of any implementation-defined descendants
of packages Ada, Interfaces, or System.
@node No_Implicit_Aliasing,No_Implicit_Loops,No_Implementation_Units,Program Unit Level Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-aliasing}@anchor{20e}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-aliasing}@anchor{20f}
@subsection No_Implicit_Aliasing
@@ -13360,7 +13424,7 @@ to be aliased, and in such cases, it can always be replaced by
the standard attribute Unchecked_Access which is preferable.
@node No_Implicit_Loops,No_Obsolescent_Features,No_Implicit_Aliasing,Program Unit Level Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-loops}@anchor{20f}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-loops}@anchor{210}
@subsection No_Implicit_Loops
@@ -13377,7 +13441,7 @@ arrays larger than about 5000 scalar components. Note that if this restriction
is set in the spec of a package, it will not apply to its body.
@node No_Obsolescent_Features,No_Wide_Characters,No_Implicit_Loops,Program Unit Level Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-obsolescent-features}@anchor{210}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-obsolescent-features}@anchor{211}
@subsection No_Obsolescent_Features
@@ -13387,7 +13451,7 @@ is set in the spec of a package, it will not apply to its body.
features are used, as defined in Annex J of the Ada Reference Manual.
@node No_Wide_Characters,Static_Dispatch_Tables,No_Obsolescent_Features,Program Unit Level Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-wide-characters}@anchor{211}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-wide-characters}@anchor{212}
@subsection No_Wide_Characters
@@ -13401,7 +13465,7 @@ appear in the program (that is literals representing characters not in
type @code{Character}).
@node Static_Dispatch_Tables,SPARK_05,No_Wide_Characters,Program Unit Level Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-dispatch-tables}@anchor{212}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-dispatch-tables}@anchor{213}
@subsection Static_Dispatch_Tables
@@ -13411,7 +13475,7 @@ type @code{Character}).
associated with dispatch tables can be placed in read-only memory.
@node SPARK_05,,Static_Dispatch_Tables,Program Unit Level Restrictions
-@anchor{gnat_rm/standard_and_implementation_defined_restrictions spark-05}@anchor{213}
+@anchor{gnat_rm/standard_and_implementation_defined_restrictions spark-05}@anchor{214}
@subsection SPARK_05
@@ -13785,7 +13849,7 @@ violations will be reported for constructs forbidden in SPARK 95,
instead of SPARK 2005.
@node Implementation Advice,Implementation Defined Characteristics,Standard and Implementation Defined Restrictions,Top
-@anchor{gnat_rm/implementation_advice doc}@anchor{214}@anchor{gnat_rm/implementation_advice implementation-advice}@anchor{a}@anchor{gnat_rm/implementation_advice id1}@anchor{215}
+@anchor{gnat_rm/implementation_advice doc}@anchor{215}@anchor{gnat_rm/implementation_advice implementation-advice}@anchor{a}@anchor{gnat_rm/implementation_advice id1}@anchor{216}
@chapter Implementation Advice
@@ -13882,7 +13946,7 @@ case the text describes what GNAT does and why.
@end menu
@node RM 1 1 3 20 Error Detection,RM 1 1 3 31 Child Units,,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-1-1-3-20-error-detection}@anchor{216}
+@anchor{gnat_rm/implementation_advice rm-1-1-3-20-error-detection}@anchor{217}
@section RM 1.1.3(20): Error Detection
@@ -13899,7 +13963,7 @@ or diagnosed at compile time.
@geindex Child Units
@node RM 1 1 3 31 Child Units,RM 1 1 5 12 Bounded Errors,RM 1 1 3 20 Error Detection,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-1-1-3-31-child-units}@anchor{217}
+@anchor{gnat_rm/implementation_advice rm-1-1-3-31-child-units}@anchor{218}
@section RM 1.1.3(31): Child Units
@@ -13915,7 +13979,7 @@ Followed.
@geindex Bounded errors
@node RM 1 1 5 12 Bounded Errors,RM 2 8 16 Pragmas,RM 1 1 3 31 Child Units,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-1-1-5-12-bounded-errors}@anchor{218}
+@anchor{gnat_rm/implementation_advice rm-1-1-5-12-bounded-errors}@anchor{219}
@section RM 1.1.5(12): Bounded Errors
@@ -13932,7 +13996,7 @@ runtime.
@geindex Pragmas
@node RM 2 8 16 Pragmas,RM 2 8 17-19 Pragmas,RM 1 1 5 12 Bounded Errors,Implementation Advice
-@anchor{gnat_rm/implementation_advice id2}@anchor{219}@anchor{gnat_rm/implementation_advice rm-2-8-16-pragmas}@anchor{21a}
+@anchor{gnat_rm/implementation_advice id2}@anchor{21a}@anchor{gnat_rm/implementation_advice rm-2-8-16-pragmas}@anchor{21b}
@section RM 2.8(16): Pragmas
@@ -14045,7 +14109,7 @@ that this advice not be followed. For details see
@ref{7,,Implementation Defined Pragmas}.
@node RM 2 8 17-19 Pragmas,RM 3 5 2 5 Alternative Character Sets,RM 2 8 16 Pragmas,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-2-8-17-19-pragmas}@anchor{21b}
+@anchor{gnat_rm/implementation_advice rm-2-8-17-19-pragmas}@anchor{21c}
@section RM 2.8(17-19): Pragmas
@@ -14066,14 +14130,14 @@ replacing @code{library_items}."
@end itemize
@end quotation
-See @ref{21a,,RM 2.8(16); Pragmas}.
+See @ref{21b,,RM 2.8(16); Pragmas}.
@geindex Character Sets
@geindex Alternative Character Sets
@node RM 3 5 2 5 Alternative Character Sets,RM 3 5 4 28 Integer Types,RM 2 8 17-19 Pragmas,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-3-5-2-5-alternative-character-sets}@anchor{21c}
+@anchor{gnat_rm/implementation_advice rm-3-5-2-5-alternative-character-sets}@anchor{21d}
@section RM 3.5.2(5): Alternative Character Sets
@@ -14101,7 +14165,7 @@ there is no such restriction.
@geindex Integer types
@node RM 3 5 4 28 Integer Types,RM 3 5 4 29 Integer Types,RM 3 5 2 5 Alternative Character Sets,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-3-5-4-28-integer-types}@anchor{21d}
+@anchor{gnat_rm/implementation_advice rm-3-5-4-28-integer-types}@anchor{21e}
@section RM 3.5.4(28): Integer Types
@@ -14120,7 +14184,7 @@ are supported for convenient interface to C, and so that all hardware
types of the machine are easily available.
@node RM 3 5 4 29 Integer Types,RM 3 5 5 8 Enumeration Values,RM 3 5 4 28 Integer Types,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-3-5-4-29-integer-types}@anchor{21e}
+@anchor{gnat_rm/implementation_advice rm-3-5-4-29-integer-types}@anchor{21f}
@section RM 3.5.4(29): Integer Types
@@ -14136,7 +14200,7 @@ Followed.
@geindex Enumeration values
@node RM 3 5 5 8 Enumeration Values,RM 3 5 7 17 Float Types,RM 3 5 4 29 Integer Types,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-3-5-5-8-enumeration-values}@anchor{21f}
+@anchor{gnat_rm/implementation_advice rm-3-5-5-8-enumeration-values}@anchor{220}
@section RM 3.5.5(8): Enumeration Values
@@ -14156,7 +14220,7 @@ Followed.
@geindex Float types
@node RM 3 5 7 17 Float Types,RM 3 6 2 11 Multidimensional Arrays,RM 3 5 5 8 Enumeration Values,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-3-5-7-17-float-types}@anchor{220}
+@anchor{gnat_rm/implementation_advice rm-3-5-7-17-float-types}@anchor{221}
@section RM 3.5.7(17): Float Types
@@ -14186,7 +14250,7 @@ since this is a software rather than a hardware format.
@geindex multidimensional
@node RM 3 6 2 11 Multidimensional Arrays,RM 9 6 30-31 Duration'Small,RM 3 5 7 17 Float Types,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-3-6-2-11-multidimensional-arrays}@anchor{221}
+@anchor{gnat_rm/implementation_advice rm-3-6-2-11-multidimensional-arrays}@anchor{222}
@section RM 3.6.2(11): Multidimensional Arrays
@@ -14204,7 +14268,7 @@ Followed.
@geindex Duration'Small
@node RM 9 6 30-31 Duration'Small,RM 10 2 1 12 Consistent Representation,RM 3 6 2 11 Multidimensional Arrays,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-9-6-30-31-duration-small}@anchor{222}
+@anchor{gnat_rm/implementation_advice rm-9-6-30-31-duration-small}@anchor{223}
@section RM 9.6(30-31): Duration'Small
@@ -14225,7 +14289,7 @@ it need not be the same time base as used for @code{Calendar.Clock}."
Followed.
@node RM 10 2 1 12 Consistent Representation,RM 11 4 1 19 Exception Information,RM 9 6 30-31 Duration'Small,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-10-2-1-12-consistent-representation}@anchor{223}
+@anchor{gnat_rm/implementation_advice rm-10-2-1-12-consistent-representation}@anchor{224}
@section RM 10.2.1(12): Consistent Representation
@@ -14247,7 +14311,7 @@ advice without severely impacting efficiency of execution.
@geindex Exception information
@node RM 11 4 1 19 Exception Information,RM 11 5 28 Suppression of Checks,RM 10 2 1 12 Consistent Representation,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-11-4-1-19-exception-information}@anchor{224}
+@anchor{gnat_rm/implementation_advice rm-11-4-1-19-exception-information}@anchor{225}
@section RM 11.4.1(19): Exception Information
@@ -14278,7 +14342,7 @@ Pragma @code{Discard_Names}.
@geindex suppression of
@node RM 11 5 28 Suppression of Checks,RM 13 1 21-24 Representation Clauses,RM 11 4 1 19 Exception Information,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-11-5-28-suppression-of-checks}@anchor{225}
+@anchor{gnat_rm/implementation_advice rm-11-5-28-suppression-of-checks}@anchor{226}
@section RM 11.5(28): Suppression of Checks
@@ -14293,7 +14357,7 @@ Followed.
@geindex Representation clauses
@node RM 13 1 21-24 Representation Clauses,RM 13 2 6-8 Packed Types,RM 11 5 28 Suppression of Checks,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-13-1-21-24-representation-clauses}@anchor{226}
+@anchor{gnat_rm/implementation_advice rm-13-1-21-24-representation-clauses}@anchor{227}
@section RM 13.1 (21-24): Representation Clauses
@@ -14342,7 +14406,7 @@ Followed.
@geindex Packed types
@node RM 13 2 6-8 Packed Types,RM 13 3 14-19 Address Clauses,RM 13 1 21-24 Representation Clauses,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-13-2-6-8-packed-types}@anchor{227}
+@anchor{gnat_rm/implementation_advice rm-13-2-6-8-packed-types}@anchor{228}
@section RM 13.2(6-8): Packed Types
@@ -14381,7 +14445,7 @@ Followed.
@geindex Address clauses
@node RM 13 3 14-19 Address Clauses,RM 13 3 29-35 Alignment Clauses,RM 13 2 6-8 Packed Types,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-13-3-14-19-address-clauses}@anchor{228}
+@anchor{gnat_rm/implementation_advice rm-13-3-14-19-address-clauses}@anchor{229}
@section RM 13.3(14-19): Address Clauses
@@ -14434,7 +14498,7 @@ Followed.
@geindex Alignment clauses
@node RM 13 3 29-35 Alignment Clauses,RM 13 3 42-43 Size Clauses,RM 13 3 14-19 Address Clauses,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-13-3-29-35-alignment-clauses}@anchor{229}
+@anchor{gnat_rm/implementation_advice rm-13-3-29-35-alignment-clauses}@anchor{22a}
@section RM 13.3(29-35): Alignment Clauses
@@ -14491,7 +14555,7 @@ Followed.
@geindex Size clauses
@node RM 13 3 42-43 Size Clauses,RM 13 3 50-56 Size Clauses,RM 13 3 29-35 Alignment Clauses,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-13-3-42-43-size-clauses}@anchor{22a}
+@anchor{gnat_rm/implementation_advice rm-13-3-42-43-size-clauses}@anchor{22b}
@section RM 13.3(42-43): Size Clauses
@@ -14509,7 +14573,7 @@ object's @code{Alignment} (if the @code{Alignment} is nonzero)."
Followed.
@node RM 13 3 50-56 Size Clauses,RM 13 3 71-73 Component Size Clauses,RM 13 3 42-43 Size Clauses,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-13-3-50-56-size-clauses}@anchor{22b}
+@anchor{gnat_rm/implementation_advice rm-13-3-50-56-size-clauses}@anchor{22c}
@section RM 13.3(50-56): Size Clauses
@@ -14560,7 +14624,7 @@ Followed.
@geindex Component_Size clauses
@node RM 13 3 71-73 Component Size Clauses,RM 13 4 9-10 Enumeration Representation Clauses,RM 13 3 50-56 Size Clauses,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-13-3-71-73-component-size-clauses}@anchor{22c}
+@anchor{gnat_rm/implementation_advice rm-13-3-71-73-component-size-clauses}@anchor{22d}
@section RM 13.3(71-73): Component Size Clauses
@@ -14594,7 +14658,7 @@ Followed.
@geindex enumeration
@node RM 13 4 9-10 Enumeration Representation Clauses,RM 13 5 1 17-22 Record Representation Clauses,RM 13 3 71-73 Component Size Clauses,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-13-4-9-10-enumeration-representation-clauses}@anchor{22d}
+@anchor{gnat_rm/implementation_advice rm-13-4-9-10-enumeration-representation-clauses}@anchor{22e}
@section RM 13.4(9-10): Enumeration Representation Clauses
@@ -14616,7 +14680,7 @@ Followed.
@geindex records
@node RM 13 5 1 17-22 Record Representation Clauses,RM 13 5 2 5 Storage Place Attributes,RM 13 4 9-10 Enumeration Representation Clauses,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-13-5-1-17-22-record-representation-clauses}@anchor{22e}
+@anchor{gnat_rm/implementation_advice rm-13-5-1-17-22-record-representation-clauses}@anchor{22f}
@section RM 13.5.1(17-22): Record Representation Clauses
@@ -14676,7 +14740,7 @@ and all mentioned features are implemented.
@geindex Storage place attributes
@node RM 13 5 2 5 Storage Place Attributes,RM 13 5 3 7-8 Bit Ordering,RM 13 5 1 17-22 Record Representation Clauses,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-13-5-2-5-storage-place-attributes}@anchor{22f}
+@anchor{gnat_rm/implementation_advice rm-13-5-2-5-storage-place-attributes}@anchor{230}
@section RM 13.5.2(5): Storage Place Attributes
@@ -14696,7 +14760,7 @@ Followed. There are no such components in GNAT.
@geindex Bit ordering
@node RM 13 5 3 7-8 Bit Ordering,RM 13 7 37 Address as Private,RM 13 5 2 5 Storage Place Attributes,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-13-5-3-7-8-bit-ordering}@anchor{230}
+@anchor{gnat_rm/implementation_advice rm-13-5-3-7-8-bit-ordering}@anchor{231}
@section RM 13.5.3(7-8): Bit Ordering
@@ -14716,7 +14780,7 @@ Thus non-default bit ordering is not supported.
@geindex as private type
@node RM 13 7 37 Address as Private,RM 13 7 1 16 Address Operations,RM 13 5 3 7-8 Bit Ordering,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-13-7-37-address-as-private}@anchor{231}
+@anchor{gnat_rm/implementation_advice rm-13-7-37-address-as-private}@anchor{232}
@section RM 13.7(37): Address as Private
@@ -14734,7 +14798,7 @@ Followed.
@geindex operations of
@node RM 13 7 1 16 Address Operations,RM 13 9 14-17 Unchecked Conversion,RM 13 7 37 Address as Private,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-13-7-1-16-address-operations}@anchor{232}
+@anchor{gnat_rm/implementation_advice rm-13-7-1-16-address-operations}@anchor{233}
@section RM 13.7.1(16): Address Operations
@@ -14752,7 +14816,7 @@ operation raises @code{Program_Error}, since all operations make sense.
@geindex Unchecked conversion
@node RM 13 9 14-17 Unchecked Conversion,RM 13 11 23-25 Implicit Heap Usage,RM 13 7 1 16 Address Operations,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-13-9-14-17-unchecked-conversion}@anchor{233}
+@anchor{gnat_rm/implementation_advice rm-13-9-14-17-unchecked-conversion}@anchor{234}
@section RM 13.9(14-17): Unchecked Conversion
@@ -14796,7 +14860,7 @@ Followed.
@geindex implicit
@node RM 13 11 23-25 Implicit Heap Usage,RM 13 11 2 17 Unchecked Deallocation,RM 13 9 14-17 Unchecked Conversion,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-13-11-23-25-implicit-heap-usage}@anchor{234}
+@anchor{gnat_rm/implementation_advice rm-13-11-23-25-implicit-heap-usage}@anchor{235}
@section RM 13.11(23-25): Implicit Heap Usage
@@ -14847,7 +14911,7 @@ Followed.
@geindex Unchecked deallocation
@node RM 13 11 2 17 Unchecked Deallocation,RM 13 13 2 1 6 Stream Oriented Attributes,RM 13 11 23-25 Implicit Heap Usage,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-13-11-2-17-unchecked-deallocation}@anchor{235}
+@anchor{gnat_rm/implementation_advice rm-13-11-2-17-unchecked-deallocation}@anchor{236}
@section RM 13.11.2(17): Unchecked Deallocation
@@ -14862,7 +14926,7 @@ Followed.
@geindex Stream oriented attributes
@node RM 13 13 2 1 6 Stream Oriented Attributes,RM A 1 52 Names of Predefined Numeric Types,RM 13 11 2 17 Unchecked Deallocation,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-13-13-2-1-6-stream-oriented-attributes}@anchor{236}
+@anchor{gnat_rm/implementation_advice rm-13-13-2-1-6-stream-oriented-attributes}@anchor{237}
@section RM 13.13.2(1.6): Stream Oriented Attributes
@@ -14917,7 +14981,7 @@ the @emph{GNAT and Libraries} section of the @cite{GNAT User's Guide}.
@end itemize
@node RM A 1 52 Names of Predefined Numeric Types,RM A 3 2 49 Ada Characters Handling,RM 13 13 2 1 6 Stream Oriented Attributes,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-a-1-52-names-of-predefined-numeric-types}@anchor{237}
+@anchor{gnat_rm/implementation_advice rm-a-1-52-names-of-predefined-numeric-types}@anchor{238}
@section RM A.1(52): Names of Predefined Numeric Types
@@ -14935,7 +14999,7 @@ Followed.
@geindex Ada.Characters.Handling
@node RM A 3 2 49 Ada Characters Handling,RM A 4 4 106 Bounded-Length String Handling,RM A 1 52 Names of Predefined Numeric Types,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-a-3-2-49-ada-characters-handling}@anchor{238}
+@anchor{gnat_rm/implementation_advice rm-a-3-2-49-ada-characters-handling}@anchor{239}
@section RM A.3.2(49): @code{Ada.Characters.Handling}
@@ -14952,7 +15016,7 @@ Followed. GNAT provides no such localized definitions.
@geindex Bounded-length strings
@node RM A 4 4 106 Bounded-Length String Handling,RM A 5 2 46-47 Random Number Generation,RM A 3 2 49 Ada Characters Handling,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-a-4-4-106-bounded-length-string-handling}@anchor{239}
+@anchor{gnat_rm/implementation_advice rm-a-4-4-106-bounded-length-string-handling}@anchor{23a}
@section RM A.4.4(106): Bounded-Length String Handling
@@ -14967,7 +15031,7 @@ Followed. No implicit pointers or dynamic allocation are used.
@geindex Random number generation
@node RM A 5 2 46-47 Random Number Generation,RM A 10 7 23 Get_Immediate,RM A 4 4 106 Bounded-Length String Handling,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-a-5-2-46-47-random-number-generation}@anchor{23a}
+@anchor{gnat_rm/implementation_advice rm-a-5-2-46-47-random-number-generation}@anchor{23b}
@section RM A.5.2(46-47): Random Number Generation
@@ -14996,7 +15060,7 @@ condition here to hold true.
@geindex Get_Immediate
@node RM A 10 7 23 Get_Immediate,RM B 1 39-41 Pragma Export,RM A 5 2 46-47 Random Number Generation,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-a-10-7-23-get-immediate}@anchor{23b}
+@anchor{gnat_rm/implementation_advice rm-a-10-7-23-get-immediate}@anchor{23c}
@section RM A.10.7(23): @code{Get_Immediate}
@@ -15020,7 +15084,7 @@ this functionality.
@geindex Export
@node RM B 1 39-41 Pragma Export,RM B 2 12-13 Package Interfaces,RM A 10 7 23 Get_Immediate,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-b-1-39-41-pragma-export}@anchor{23c}
+@anchor{gnat_rm/implementation_advice rm-b-1-39-41-pragma-export}@anchor{23d}
@section RM B.1(39-41): Pragma @code{Export}
@@ -15068,7 +15132,7 @@ Followed.
@geindex Interfaces
@node RM B 2 12-13 Package Interfaces,RM B 3 63-71 Interfacing with C,RM B 1 39-41 Pragma Export,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-b-2-12-13-package-interfaces}@anchor{23d}
+@anchor{gnat_rm/implementation_advice rm-b-2-12-13-package-interfaces}@anchor{23e}
@section RM B.2(12-13): Package @code{Interfaces}
@@ -15098,7 +15162,7 @@ Followed. GNAT provides all the packages described in this section.
@geindex interfacing with
@node RM B 3 63-71 Interfacing with C,RM B 4 95-98 Interfacing with COBOL,RM B 2 12-13 Package Interfaces,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-b-3-63-71-interfacing-with-c}@anchor{23e}
+@anchor{gnat_rm/implementation_advice rm-b-3-63-71-interfacing-with-c}@anchor{23f}
@section RM B.3(63-71): Interfacing with C
@@ -15186,7 +15250,7 @@ Followed.
@geindex interfacing with
@node RM B 4 95-98 Interfacing with COBOL,RM B 5 22-26 Interfacing with Fortran,RM B 3 63-71 Interfacing with C,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-b-4-95-98-interfacing-with-cobol}@anchor{23f}
+@anchor{gnat_rm/implementation_advice rm-b-4-95-98-interfacing-with-cobol}@anchor{240}
@section RM B.4(95-98): Interfacing with COBOL
@@ -15227,7 +15291,7 @@ Followed.
@geindex interfacing with
@node RM B 5 22-26 Interfacing with Fortran,RM C 1 3-5 Access to Machine Operations,RM B 4 95-98 Interfacing with COBOL,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-b-5-22-26-interfacing-with-fortran}@anchor{240}
+@anchor{gnat_rm/implementation_advice rm-b-5-22-26-interfacing-with-fortran}@anchor{241}
@section RM B.5(22-26): Interfacing with Fortran
@@ -15278,7 +15342,7 @@ Followed.
@geindex Machine operations
@node RM C 1 3-5 Access to Machine Operations,RM C 1 10-16 Access to Machine Operations,RM B 5 22-26 Interfacing with Fortran,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-c-1-3-5-access-to-machine-operations}@anchor{241}
+@anchor{gnat_rm/implementation_advice rm-c-1-3-5-access-to-machine-operations}@anchor{242}
@section RM C.1(3-5): Access to Machine Operations
@@ -15313,7 +15377,7 @@ object that is specified as exported."
Followed.
@node RM C 1 10-16 Access to Machine Operations,RM C 3 28 Interrupt Support,RM C 1 3-5 Access to Machine Operations,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-c-1-10-16-access-to-machine-operations}@anchor{242}
+@anchor{gnat_rm/implementation_advice rm-c-1-10-16-access-to-machine-operations}@anchor{243}
@section RM C.1(10-16): Access to Machine Operations
@@ -15374,7 +15438,7 @@ Followed on any target supporting such operations.
@geindex Interrupt support
@node RM C 3 28 Interrupt Support,RM C 3 1 20-21 Protected Procedure Handlers,RM C 1 10-16 Access to Machine Operations,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-c-3-28-interrupt-support}@anchor{243}
+@anchor{gnat_rm/implementation_advice rm-c-3-28-interrupt-support}@anchor{244}
@section RM C.3(28): Interrupt Support
@@ -15392,7 +15456,7 @@ of interrupt blocking.
@geindex Protected procedure handlers
@node RM C 3 1 20-21 Protected Procedure Handlers,RM C 3 2 25 Package Interrupts,RM C 3 28 Interrupt Support,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-c-3-1-20-21-protected-procedure-handlers}@anchor{244}
+@anchor{gnat_rm/implementation_advice rm-c-3-1-20-21-protected-procedure-handlers}@anchor{245}
@section RM C.3.1(20-21): Protected Procedure Handlers
@@ -15418,7 +15482,7 @@ Followed. Compile time warnings are given when possible.
@geindex Interrupts
@node RM C 3 2 25 Package Interrupts,RM C 4 14 Pre-elaboration Requirements,RM C 3 1 20-21 Protected Procedure Handlers,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-c-3-2-25-package-interrupts}@anchor{245}
+@anchor{gnat_rm/implementation_advice rm-c-3-2-25-package-interrupts}@anchor{246}
@section RM C.3.2(25): Package @code{Interrupts}
@@ -15436,7 +15500,7 @@ Followed.
@geindex Pre-elaboration requirements
@node RM C 4 14 Pre-elaboration Requirements,RM C 5 8 Pragma Discard_Names,RM C 3 2 25 Package Interrupts,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-c-4-14-pre-elaboration-requirements}@anchor{246}
+@anchor{gnat_rm/implementation_advice rm-c-4-14-pre-elaboration-requirements}@anchor{247}
@section RM C.4(14): Pre-elaboration Requirements
@@ -15452,7 +15516,7 @@ Followed. Executable code is generated in some cases, e.g., loops
to initialize large arrays.
@node RM C 5 8 Pragma Discard_Names,RM C 7 2 30 The Package Task_Attributes,RM C 4 14 Pre-elaboration Requirements,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-c-5-8-pragma-discard-names}@anchor{247}
+@anchor{gnat_rm/implementation_advice rm-c-5-8-pragma-discard-names}@anchor{248}
@section RM C.5(8): Pragma @code{Discard_Names}
@@ -15470,7 +15534,7 @@ Followed.
@geindex Task_Attributes
@node RM C 7 2 30 The Package Task_Attributes,RM D 3 17 Locking Policies,RM C 5 8 Pragma Discard_Names,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-c-7-2-30-the-package-task-attributes}@anchor{248}
+@anchor{gnat_rm/implementation_advice rm-c-7-2-30-the-package-task-attributes}@anchor{249}
@section RM C.7.2(30): The Package Task_Attributes
@@ -15491,7 +15555,7 @@ Not followed. This implementation is not targeted to such a domain.
@geindex Locking Policies
@node RM D 3 17 Locking Policies,RM D 4 16 Entry Queuing Policies,RM C 7 2 30 The Package Task_Attributes,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-d-3-17-locking-policies}@anchor{249}
+@anchor{gnat_rm/implementation_advice rm-d-3-17-locking-policies}@anchor{24a}
@section RM D.3(17): Locking Policies
@@ -15508,7 +15572,7 @@ whose names (@code{Inheritance_Locking} and
@geindex Entry queuing policies
@node RM D 4 16 Entry Queuing Policies,RM D 6 9-10 Preemptive Abort,RM D 3 17 Locking Policies,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-d-4-16-entry-queuing-policies}@anchor{24a}
+@anchor{gnat_rm/implementation_advice rm-d-4-16-entry-queuing-policies}@anchor{24b}
@section RM D.4(16): Entry Queuing Policies
@@ -15523,7 +15587,7 @@ Followed. No such implementation-defined queuing policies exist.
@geindex Preemptive abort
@node RM D 6 9-10 Preemptive Abort,RM D 7 21 Tasking Restrictions,RM D 4 16 Entry Queuing Policies,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-d-6-9-10-preemptive-abort}@anchor{24b}
+@anchor{gnat_rm/implementation_advice rm-d-6-9-10-preemptive-abort}@anchor{24c}
@section RM D.6(9-10): Preemptive Abort
@@ -15549,7 +15613,7 @@ Followed.
@geindex Tasking restrictions
@node RM D 7 21 Tasking Restrictions,RM D 8 47-49 Monotonic Time,RM D 6 9-10 Preemptive Abort,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-d-7-21-tasking-restrictions}@anchor{24c}
+@anchor{gnat_rm/implementation_advice rm-d-7-21-tasking-restrictions}@anchor{24d}
@section RM D.7(21): Tasking Restrictions
@@ -15568,7 +15632,7 @@ pragma @code{Profile (Restricted)} for more details.
@geindex monotonic
@node RM D 8 47-49 Monotonic Time,RM E 5 28-29 Partition Communication Subsystem,RM D 7 21 Tasking Restrictions,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-d-8-47-49-monotonic-time}@anchor{24d}
+@anchor{gnat_rm/implementation_advice rm-d-8-47-49-monotonic-time}@anchor{24e}
@section RM D.8(47-49): Monotonic Time
@@ -15603,7 +15667,7 @@ Followed.
@geindex PCS
@node RM E 5 28-29 Partition Communication Subsystem,RM F 7 COBOL Support,RM D 8 47-49 Monotonic Time,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-e-5-28-29-partition-communication-subsystem}@anchor{24e}
+@anchor{gnat_rm/implementation_advice rm-e-5-28-29-partition-communication-subsystem}@anchor{24f}
@section RM E.5(28-29): Partition Communication Subsystem
@@ -15631,7 +15695,7 @@ GNAT.
@geindex COBOL support
@node RM F 7 COBOL Support,RM F 1 2 Decimal Radix Support,RM E 5 28-29 Partition Communication Subsystem,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-f-7-cobol-support}@anchor{24f}
+@anchor{gnat_rm/implementation_advice rm-f-7-cobol-support}@anchor{250}
@section RM F(7): COBOL Support
@@ -15651,7 +15715,7 @@ Followed.
@geindex Decimal radix support
@node RM F 1 2 Decimal Radix Support,RM G Numerics,RM F 7 COBOL Support,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-f-1-2-decimal-radix-support}@anchor{250}
+@anchor{gnat_rm/implementation_advice rm-f-1-2-decimal-radix-support}@anchor{251}
@section RM F.1(2): Decimal Radix Support
@@ -15667,7 +15731,7 @@ representations.
@geindex Numerics
@node RM G Numerics,RM G 1 1 56-58 Complex Types,RM F 1 2 Decimal Radix Support,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-g-numerics}@anchor{251}
+@anchor{gnat_rm/implementation_advice rm-g-numerics}@anchor{252}
@section RM G: Numerics
@@ -15687,7 +15751,7 @@ Followed.
@geindex Complex types
@node RM G 1 1 56-58 Complex Types,RM G 1 2 49 Complex Elementary Functions,RM G Numerics,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-g-1-1-56-58-complex-types}@anchor{252}
+@anchor{gnat_rm/implementation_advice rm-g-1-1-56-58-complex-types}@anchor{253}
@section RM G.1.1(56-58): Complex Types
@@ -15749,7 +15813,7 @@ Followed.
@geindex Complex elementary functions
@node RM G 1 2 49 Complex Elementary Functions,RM G 2 4 19 Accuracy Requirements,RM G 1 1 56-58 Complex Types,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-g-1-2-49-complex-elementary-functions}@anchor{253}
+@anchor{gnat_rm/implementation_advice rm-g-1-2-49-complex-elementary-functions}@anchor{254}
@section RM G.1.2(49): Complex Elementary Functions
@@ -15771,7 +15835,7 @@ Followed.
@geindex Accuracy requirements
@node RM G 2 4 19 Accuracy Requirements,RM G 2 6 15 Complex Arithmetic Accuracy,RM G 1 2 49 Complex Elementary Functions,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-g-2-4-19-accuracy-requirements}@anchor{254}
+@anchor{gnat_rm/implementation_advice rm-g-2-4-19-accuracy-requirements}@anchor{255}
@section RM G.2.4(19): Accuracy Requirements
@@ -15795,7 +15859,7 @@ Followed.
@geindex complex arithmetic
@node RM G 2 6 15 Complex Arithmetic Accuracy,RM H 6 15/2 Pragma Partition_Elaboration_Policy,RM G 2 4 19 Accuracy Requirements,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-g-2-6-15-complex-arithmetic-accuracy}@anchor{255}
+@anchor{gnat_rm/implementation_advice rm-g-2-6-15-complex-arithmetic-accuracy}@anchor{256}
@section RM G.2.6(15): Complex Arithmetic Accuracy
@@ -15813,7 +15877,7 @@ Followed.
@geindex Sequential elaboration policy
@node RM H 6 15/2 Pragma Partition_Elaboration_Policy,,RM G 2 6 15 Complex Arithmetic Accuracy,Implementation Advice
-@anchor{gnat_rm/implementation_advice rm-h-6-15-2-pragma-partition-elaboration-policy}@anchor{256}
+@anchor{gnat_rm/implementation_advice rm-h-6-15-2-pragma-partition-elaboration-policy}@anchor{257}
@section RM H.6(15/2): Pragma Partition_Elaboration_Policy
@@ -15828,7 +15892,7 @@ immediately terminated."
Not followed.
@node Implementation Defined Characteristics,Intrinsic Subprograms,Implementation Advice,Top
-@anchor{gnat_rm/implementation_defined_characteristics implementation-defined-characteristics}@anchor{b}@anchor{gnat_rm/implementation_defined_characteristics doc}@anchor{257}@anchor{gnat_rm/implementation_defined_characteristics id1}@anchor{258}
+@anchor{gnat_rm/implementation_defined_characteristics implementation-defined-characteristics}@anchor{b}@anchor{gnat_rm/implementation_defined_characteristics doc}@anchor{258}@anchor{gnat_rm/implementation_defined_characteristics id1}@anchor{259}
@chapter Implementation Defined Characteristics
@@ -17024,7 +17088,7 @@ When the @code{Pattern} parameter is not the null string, it is interpreted
according to the syntax of regular expressions as defined in the
@code{GNAT.Regexp} package.
-See @ref{259,,GNAT.Regexp (g-regexp.ads)}.
+See @ref{25a,,GNAT.Regexp (g-regexp.ads)}.
@itemize *
@@ -18073,7 +18137,7 @@ H.4(27)."
There are no restrictions on pragma @code{Restrictions}.
@node Intrinsic Subprograms,Representation Clauses and Pragmas,Implementation Defined Characteristics,Top
-@anchor{gnat_rm/intrinsic_subprograms doc}@anchor{25a}@anchor{gnat_rm/intrinsic_subprograms intrinsic-subprograms}@anchor{c}@anchor{gnat_rm/intrinsic_subprograms id1}@anchor{25b}
+@anchor{gnat_rm/intrinsic_subprograms doc}@anchor{25b}@anchor{gnat_rm/intrinsic_subprograms intrinsic-subprograms}@anchor{c}@anchor{gnat_rm/intrinsic_subprograms id1}@anchor{25c}
@chapter Intrinsic Subprograms
@@ -18111,7 +18175,7 @@ Ada standard does not require Ada compilers to implement this feature.
@end menu
@node Intrinsic Operators,Compilation_ISO_Date,,Intrinsic Subprograms
-@anchor{gnat_rm/intrinsic_subprograms id2}@anchor{25c}@anchor{gnat_rm/intrinsic_subprograms intrinsic-operators}@anchor{25d}
+@anchor{gnat_rm/intrinsic_subprograms id2}@anchor{25d}@anchor{gnat_rm/intrinsic_subprograms intrinsic-operators}@anchor{25e}
@section Intrinsic Operators
@@ -18142,7 +18206,7 @@ It is also possible to specify such operators for private types, if the
full views are appropriate arithmetic types.
@node Compilation_ISO_Date,Compilation_Date,Intrinsic Operators,Intrinsic Subprograms
-@anchor{gnat_rm/intrinsic_subprograms id3}@anchor{25e}@anchor{gnat_rm/intrinsic_subprograms compilation-iso-date}@anchor{25f}
+@anchor{gnat_rm/intrinsic_subprograms id3}@anchor{25f}@anchor{gnat_rm/intrinsic_subprograms compilation-iso-date}@anchor{260}
@section Compilation_ISO_Date
@@ -18156,7 +18220,7 @@ application program should simply call the function
the current compilation (in local time format YYYY-MM-DD).
@node Compilation_Date,Compilation_Time,Compilation_ISO_Date,Intrinsic Subprograms
-@anchor{gnat_rm/intrinsic_subprograms compilation-date}@anchor{260}@anchor{gnat_rm/intrinsic_subprograms id4}@anchor{261}
+@anchor{gnat_rm/intrinsic_subprograms compilation-date}@anchor{261}@anchor{gnat_rm/intrinsic_subprograms id4}@anchor{262}
@section Compilation_Date
@@ -18166,7 +18230,7 @@ Same as Compilation_ISO_Date, except the string is in the form
MMM DD YYYY.
@node Compilation_Time,Enclosing_Entity,Compilation_Date,Intrinsic Subprograms
-@anchor{gnat_rm/intrinsic_subprograms compilation-time}@anchor{262}@anchor{gnat_rm/intrinsic_subprograms id5}@anchor{263}
+@anchor{gnat_rm/intrinsic_subprograms compilation-time}@anchor{263}@anchor{gnat_rm/intrinsic_subprograms id5}@anchor{264}
@section Compilation_Time
@@ -18180,7 +18244,7 @@ application program should simply call the function
the current compilation (in local time format HH:MM:SS).
@node Enclosing_Entity,Exception_Information,Compilation_Time,Intrinsic Subprograms
-@anchor{gnat_rm/intrinsic_subprograms id6}@anchor{264}@anchor{gnat_rm/intrinsic_subprograms enclosing-entity}@anchor{265}
+@anchor{gnat_rm/intrinsic_subprograms id6}@anchor{265}@anchor{gnat_rm/intrinsic_subprograms enclosing-entity}@anchor{266}
@section Enclosing_Entity
@@ -18194,7 +18258,7 @@ application program should simply call the function
the current subprogram, package, task, entry, or protected subprogram.
@node Exception_Information,Exception_Message,Enclosing_Entity,Intrinsic Subprograms
-@anchor{gnat_rm/intrinsic_subprograms id7}@anchor{266}@anchor{gnat_rm/intrinsic_subprograms exception-information}@anchor{267}
+@anchor{gnat_rm/intrinsic_subprograms id7}@anchor{267}@anchor{gnat_rm/intrinsic_subprograms exception-information}@anchor{268}
@section Exception_Information
@@ -18208,7 +18272,7 @@ so an application program should simply call the function
the exception information associated with the current exception.
@node Exception_Message,Exception_Name,Exception_Information,Intrinsic Subprograms
-@anchor{gnat_rm/intrinsic_subprograms exception-message}@anchor{268}@anchor{gnat_rm/intrinsic_subprograms id8}@anchor{269}
+@anchor{gnat_rm/intrinsic_subprograms exception-message}@anchor{269}@anchor{gnat_rm/intrinsic_subprograms id8}@anchor{26a}
@section Exception_Message
@@ -18222,7 +18286,7 @@ so an application program should simply call the function
the message associated with the current exception.
@node Exception_Name,File,Exception_Message,Intrinsic Subprograms
-@anchor{gnat_rm/intrinsic_subprograms exception-name}@anchor{26a}@anchor{gnat_rm/intrinsic_subprograms id9}@anchor{26b}
+@anchor{gnat_rm/intrinsic_subprograms exception-name}@anchor{26b}@anchor{gnat_rm/intrinsic_subprograms id9}@anchor{26c}
@section Exception_Name
@@ -18236,7 +18300,7 @@ so an application program should simply call the function
the name of the current exception.
@node File,Line,Exception_Name,Intrinsic Subprograms
-@anchor{gnat_rm/intrinsic_subprograms id10}@anchor{26c}@anchor{gnat_rm/intrinsic_subprograms file}@anchor{26d}
+@anchor{gnat_rm/intrinsic_subprograms id10}@anchor{26d}@anchor{gnat_rm/intrinsic_subprograms file}@anchor{26e}
@section File
@@ -18250,7 +18314,7 @@ application program should simply call the function
file.
@node Line,Shifts and Rotates,File,Intrinsic Subprograms
-@anchor{gnat_rm/intrinsic_subprograms id11}@anchor{26e}@anchor{gnat_rm/intrinsic_subprograms line}@anchor{26f}
+@anchor{gnat_rm/intrinsic_subprograms id11}@anchor{26f}@anchor{gnat_rm/intrinsic_subprograms line}@anchor{270}
@section Line
@@ -18264,7 +18328,7 @@ application program should simply call the function
source line.
@node Shifts and Rotates,Source_Location,Line,Intrinsic Subprograms
-@anchor{gnat_rm/intrinsic_subprograms shifts-and-rotates}@anchor{270}@anchor{gnat_rm/intrinsic_subprograms id12}@anchor{271}
+@anchor{gnat_rm/intrinsic_subprograms shifts-and-rotates}@anchor{271}@anchor{gnat_rm/intrinsic_subprograms id12}@anchor{272}
@section Shifts and Rotates
@@ -18303,7 +18367,7 @@ the Provide_Shift_Operators pragma, which provides the function declarations
and corresponding pragma Import's for all five shift functions.
@node Source_Location,,Shifts and Rotates,Intrinsic Subprograms
-@anchor{gnat_rm/intrinsic_subprograms source-location}@anchor{272}@anchor{gnat_rm/intrinsic_subprograms id13}@anchor{273}
+@anchor{gnat_rm/intrinsic_subprograms source-location}@anchor{273}@anchor{gnat_rm/intrinsic_subprograms id13}@anchor{274}
@section Source_Location
@@ -18317,7 +18381,7 @@ application program should simply call the function
source file location.
@node Representation Clauses and Pragmas,Standard Library Routines,Intrinsic Subprograms,Top
-@anchor{gnat_rm/representation_clauses_and_pragmas representation-clauses-and-pragmas}@anchor{d}@anchor{gnat_rm/representation_clauses_and_pragmas doc}@anchor{274}@anchor{gnat_rm/representation_clauses_and_pragmas id1}@anchor{275}
+@anchor{gnat_rm/representation_clauses_and_pragmas representation-clauses-and-pragmas}@anchor{d}@anchor{gnat_rm/representation_clauses_and_pragmas doc}@anchor{275}@anchor{gnat_rm/representation_clauses_and_pragmas id1}@anchor{276}
@chapter Representation Clauses and Pragmas
@@ -18363,7 +18427,7 @@ and this section describes the additional capabilities provided.
@end menu
@node Alignment Clauses,Size Clauses,,Representation Clauses and Pragmas
-@anchor{gnat_rm/representation_clauses_and_pragmas id2}@anchor{276}@anchor{gnat_rm/representation_clauses_and_pragmas alignment-clauses}@anchor{277}
+@anchor{gnat_rm/representation_clauses_and_pragmas id2}@anchor{277}@anchor{gnat_rm/representation_clauses_and_pragmas alignment-clauses}@anchor{278}
@section Alignment Clauses
@@ -18385,7 +18449,7 @@ For elementary types, the alignment is the minimum of the actual size of
objects of the type divided by @code{Storage_Unit},
and the maximum alignment supported by the target.
(This maximum alignment is given by the GNAT-specific attribute
-@code{Standard'Maximum_Alignment}; see @ref{191,,Attribute Maximum_Alignment}.)
+@code{Standard'Maximum_Alignment}; see @ref{192,,Attribute Maximum_Alignment}.)
@geindex Maximum_Alignment attribute
@@ -18494,7 +18558,7 @@ assumption is non-portable, and other compilers may choose different
alignments for the subtype @code{RS}.
@node Size Clauses,Storage_Size Clauses,Alignment Clauses,Representation Clauses and Pragmas
-@anchor{gnat_rm/representation_clauses_and_pragmas id3}@anchor{278}@anchor{gnat_rm/representation_clauses_and_pragmas size-clauses}@anchor{279}
+@anchor{gnat_rm/representation_clauses_and_pragmas id3}@anchor{279}@anchor{gnat_rm/representation_clauses_and_pragmas size-clauses}@anchor{27a}
@section Size Clauses
@@ -18571,7 +18635,7 @@ if it is known that a Size value can be accommodated in an object of
type Integer.
@node Storage_Size Clauses,Size of Variant Record Objects,Size Clauses,Representation Clauses and Pragmas
-@anchor{gnat_rm/representation_clauses_and_pragmas storage-size-clauses}@anchor{27a}@anchor{gnat_rm/representation_clauses_and_pragmas id4}@anchor{27b}
+@anchor{gnat_rm/representation_clauses_and_pragmas storage-size-clauses}@anchor{27b}@anchor{gnat_rm/representation_clauses_and_pragmas id4}@anchor{27c}
@section Storage_Size Clauses
@@ -18644,7 +18708,7 @@ Of course in practice, there will not be any explicit allocators in the
case of such an access declaration.
@node Size of Variant Record Objects,Biased Representation,Storage_Size Clauses,Representation Clauses and Pragmas
-@anchor{gnat_rm/representation_clauses_and_pragmas id5}@anchor{27c}@anchor{gnat_rm/representation_clauses_and_pragmas size-of-variant-record-objects}@anchor{27d}
+@anchor{gnat_rm/representation_clauses_and_pragmas id5}@anchor{27d}@anchor{gnat_rm/representation_clauses_and_pragmas size-of-variant-record-objects}@anchor{27e}
@section Size of Variant Record Objects
@@ -18754,7 +18818,7 @@ the maximum size, regardless of the current variant value, the
variant value.
@node Biased Representation,Value_Size and Object_Size Clauses,Size of Variant Record Objects,Representation Clauses and Pragmas
-@anchor{gnat_rm/representation_clauses_and_pragmas id6}@anchor{27e}@anchor{gnat_rm/representation_clauses_and_pragmas biased-representation}@anchor{27f}
+@anchor{gnat_rm/representation_clauses_and_pragmas id6}@anchor{27f}@anchor{gnat_rm/representation_clauses_and_pragmas biased-representation}@anchor{280}
@section Biased Representation
@@ -18792,7 +18856,7 @@ biased representation can be used for all discrete types except for
enumeration types for which a representation clause is given.
@node Value_Size and Object_Size Clauses,Component_Size Clauses,Biased Representation,Representation Clauses and Pragmas
-@anchor{gnat_rm/representation_clauses_and_pragmas id7}@anchor{280}@anchor{gnat_rm/representation_clauses_and_pragmas value-size-and-object-size-clauses}@anchor{281}
+@anchor{gnat_rm/representation_clauses_and_pragmas id7}@anchor{281}@anchor{gnat_rm/representation_clauses_and_pragmas value-size-and-object-size-clauses}@anchor{282}
@section Value_Size and Object_Size Clauses
@@ -19108,7 +19172,7 @@ definition clause forces biased representation. This
warning can be turned off using @code{-gnatw.B}.
@node Component_Size Clauses,Bit_Order Clauses,Value_Size and Object_Size Clauses,Representation Clauses and Pragmas
-@anchor{gnat_rm/representation_clauses_and_pragmas id8}@anchor{282}@anchor{gnat_rm/representation_clauses_and_pragmas component-size-clauses}@anchor{283}
+@anchor{gnat_rm/representation_clauses_and_pragmas id8}@anchor{283}@anchor{gnat_rm/representation_clauses_and_pragmas component-size-clauses}@anchor{284}
@section Component_Size Clauses
@@ -19155,7 +19219,7 @@ and a pragma Pack for the same array type. if such duplicate
clauses are given, the pragma Pack will be ignored.
@node Bit_Order Clauses,Effect of Bit_Order on Byte Ordering,Component_Size Clauses,Representation Clauses and Pragmas
-@anchor{gnat_rm/representation_clauses_and_pragmas bit-order-clauses}@anchor{284}@anchor{gnat_rm/representation_clauses_and_pragmas id9}@anchor{285}
+@anchor{gnat_rm/representation_clauses_and_pragmas bit-order-clauses}@anchor{285}@anchor{gnat_rm/representation_clauses_and_pragmas id9}@anchor{286}
@section Bit_Order Clauses
@@ -19261,7 +19325,7 @@ if desired. The following section contains additional
details regarding the issue of byte ordering.
@node Effect of Bit_Order on Byte Ordering,Pragma Pack for Arrays,Bit_Order Clauses,Representation Clauses and Pragmas
-@anchor{gnat_rm/representation_clauses_and_pragmas id10}@anchor{286}@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-bit-order-on-byte-ordering}@anchor{287}
+@anchor{gnat_rm/representation_clauses_and_pragmas id10}@anchor{287}@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-bit-order-on-byte-ordering}@anchor{288}
@section Effect of Bit_Order on Byte Ordering
@@ -19518,7 +19582,7 @@ to set the boolean constant @code{Master_Byte_First} in
an appropriate manner.
@node Pragma Pack for Arrays,Pragma Pack for Records,Effect of Bit_Order on Byte Ordering,Representation Clauses and Pragmas
-@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-arrays}@anchor{288}@anchor{gnat_rm/representation_clauses_and_pragmas id11}@anchor{289}
+@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-arrays}@anchor{289}@anchor{gnat_rm/representation_clauses_and_pragmas id11}@anchor{28a}
@section Pragma Pack for Arrays
@@ -19635,7 +19699,7 @@ Here 31-bit packing is achieved as required, and no warning is generated,
since in this case the programmer intention is clear.
@node Pragma Pack for Records,Record Representation Clauses,Pragma Pack for Arrays,Representation Clauses and Pragmas
-@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-records}@anchor{28a}@anchor{gnat_rm/representation_clauses_and_pragmas id12}@anchor{28b}
+@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-records}@anchor{28b}@anchor{gnat_rm/representation_clauses_and_pragmas id12}@anchor{28c}
@section Pragma Pack for Records
@@ -19720,7 +19784,7 @@ the @code{L6} field is aligned to the next byte boundary, and takes an
integral number of bytes, i.e., 72 bits.
@node Record Representation Clauses,Handling of Records with Holes,Pragma Pack for Records,Representation Clauses and Pragmas
-@anchor{gnat_rm/representation_clauses_and_pragmas id13}@anchor{28c}@anchor{gnat_rm/representation_clauses_and_pragmas record-representation-clauses}@anchor{28d}
+@anchor{gnat_rm/representation_clauses_and_pragmas id13}@anchor{28d}@anchor{gnat_rm/representation_clauses_and_pragmas record-representation-clauses}@anchor{28e}
@section Record Representation Clauses
@@ -19798,7 +19862,7 @@ end record;
@end example
@node Handling of Records with Holes,Enumeration Clauses,Record Representation Clauses,Representation Clauses and Pragmas
-@anchor{gnat_rm/representation_clauses_and_pragmas handling-of-records-with-holes}@anchor{28e}@anchor{gnat_rm/representation_clauses_and_pragmas id14}@anchor{28f}
+@anchor{gnat_rm/representation_clauses_and_pragmas handling-of-records-with-holes}@anchor{28f}@anchor{gnat_rm/representation_clauses_and_pragmas id14}@anchor{290}
@section Handling of Records with Holes
@@ -19875,7 +19939,7 @@ for Hrec'Size use 64;
@end example
@node Enumeration Clauses,Address Clauses,Handling of Records with Holes,Representation Clauses and Pragmas
-@anchor{gnat_rm/representation_clauses_and_pragmas enumeration-clauses}@anchor{290}@anchor{gnat_rm/representation_clauses_and_pragmas id15}@anchor{291}
+@anchor{gnat_rm/representation_clauses_and_pragmas enumeration-clauses}@anchor{291}@anchor{gnat_rm/representation_clauses_and_pragmas id15}@anchor{292}
@section Enumeration Clauses
@@ -19918,7 +19982,7 @@ the overhead of converting representation values to the corresponding
positional values, (i.e., the value delivered by the @code{Pos} attribute).
@node Address Clauses,Use of Address Clauses for Memory-Mapped I/O,Enumeration Clauses,Representation Clauses and Pragmas
-@anchor{gnat_rm/representation_clauses_and_pragmas id16}@anchor{292}@anchor{gnat_rm/representation_clauses_and_pragmas address-clauses}@anchor{293}
+@anchor{gnat_rm/representation_clauses_and_pragmas id16}@anchor{293}@anchor{gnat_rm/representation_clauses_and_pragmas address-clauses}@anchor{294}
@section Address Clauses
@@ -20247,7 +20311,7 @@ then the program compiles without the warning and when run will generate
the output @code{X was not clobbered}.
@node Use of Address Clauses for Memory-Mapped I/O,Effect of Convention on Representation,Address Clauses,Representation Clauses and Pragmas
-@anchor{gnat_rm/representation_clauses_and_pragmas id17}@anchor{294}@anchor{gnat_rm/representation_clauses_and_pragmas use-of-address-clauses-for-memory-mapped-i-o}@anchor{295}
+@anchor{gnat_rm/representation_clauses_and_pragmas id17}@anchor{295}@anchor{gnat_rm/representation_clauses_and_pragmas use-of-address-clauses-for-memory-mapped-i-o}@anchor{296}
@section Use of Address Clauses for Memory-Mapped I/O
@@ -20305,7 +20369,7 @@ provides the pragma @code{Volatile_Full_Access} which can be used in lieu of
pragma @code{Atomic} and will give the additional guarantee.
@node Effect of Convention on Representation,Conventions and Anonymous Access Types,Use of Address Clauses for Memory-Mapped I/O,Representation Clauses and Pragmas
-@anchor{gnat_rm/representation_clauses_and_pragmas id18}@anchor{296}@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-convention-on-representation}@anchor{297}
+@anchor{gnat_rm/representation_clauses_and_pragmas id18}@anchor{297}@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-convention-on-representation}@anchor{298}
@section Effect of Convention on Representation
@@ -20383,7 +20447,7 @@ when one of these values is read, any nonzero value is treated as True.
@end itemize
@node Conventions and Anonymous Access Types,Determining the Representations chosen by GNAT,Effect of Convention on Representation,Representation Clauses and Pragmas
-@anchor{gnat_rm/representation_clauses_and_pragmas conventions-and-anonymous-access-types}@anchor{298}@anchor{gnat_rm/representation_clauses_and_pragmas id19}@anchor{299}
+@anchor{gnat_rm/representation_clauses_and_pragmas conventions-and-anonymous-access-types}@anchor{299}@anchor{gnat_rm/representation_clauses_and_pragmas id19}@anchor{29a}
@section Conventions and Anonymous Access Types
@@ -20459,7 +20523,7 @@ package ConvComp is
@end example
@node Determining the Representations chosen by GNAT,,Conventions and Anonymous Access Types,Representation Clauses and Pragmas
-@anchor{gnat_rm/representation_clauses_and_pragmas id20}@anchor{29a}@anchor{gnat_rm/representation_clauses_and_pragmas determining-the-representations-chosen-by-gnat}@anchor{29b}
+@anchor{gnat_rm/representation_clauses_and_pragmas id20}@anchor{29b}@anchor{gnat_rm/representation_clauses_and_pragmas determining-the-representations-chosen-by-gnat}@anchor{29c}
@section Determining the Representations chosen by GNAT
@@ -20611,7 +20675,7 @@ generated by the compiler into the original source to fix and guarantee
the actual representation to be used.
@node Standard Library Routines,The Implementation of Standard I/O,Representation Clauses and Pragmas,Top
-@anchor{gnat_rm/standard_library_routines standard-library-routines}@anchor{e}@anchor{gnat_rm/standard_library_routines doc}@anchor{29c}@anchor{gnat_rm/standard_library_routines id1}@anchor{29d}
+@anchor{gnat_rm/standard_library_routines standard-library-routines}@anchor{e}@anchor{gnat_rm/standard_library_routines doc}@anchor{29d}@anchor{gnat_rm/standard_library_routines id1}@anchor{29e}
@chapter Standard Library Routines
@@ -21435,7 +21499,7 @@ For packages in Interfaces and System, all the RM defined packages are
available in GNAT, see the Ada 2012 RM for full details.
@node The Implementation of Standard I/O,The GNAT Library,Standard Library Routines,Top
-@anchor{gnat_rm/the_implementation_of_standard_i_o the-implementation-of-standard-i-o}@anchor{f}@anchor{gnat_rm/the_implementation_of_standard_i_o doc}@anchor{29e}@anchor{gnat_rm/the_implementation_of_standard_i_o id1}@anchor{29f}
+@anchor{gnat_rm/the_implementation_of_standard_i_o the-implementation-of-standard-i-o}@anchor{f}@anchor{gnat_rm/the_implementation_of_standard_i_o doc}@anchor{29f}@anchor{gnat_rm/the_implementation_of_standard_i_o id1}@anchor{2a0}
@chapter The Implementation of Standard I/O
@@ -21487,7 +21551,7 @@ these additional facilities are also described in this chapter.
@end menu
@node Standard I/O Packages,FORM Strings,,The Implementation of Standard I/O
-@anchor{gnat_rm/the_implementation_of_standard_i_o standard-i-o-packages}@anchor{2a0}@anchor{gnat_rm/the_implementation_of_standard_i_o id2}@anchor{2a1}
+@anchor{gnat_rm/the_implementation_of_standard_i_o standard-i-o-packages}@anchor{2a1}@anchor{gnat_rm/the_implementation_of_standard_i_o id2}@anchor{2a2}
@section Standard I/O Packages
@@ -21558,7 +21622,7 @@ flush the common I/O streams and in particular Standard_Output before
elaborating the Ada code.
@node FORM Strings,Direct_IO,Standard I/O Packages,The Implementation of Standard I/O
-@anchor{gnat_rm/the_implementation_of_standard_i_o form-strings}@anchor{2a2}@anchor{gnat_rm/the_implementation_of_standard_i_o id3}@anchor{2a3}
+@anchor{gnat_rm/the_implementation_of_standard_i_o form-strings}@anchor{2a3}@anchor{gnat_rm/the_implementation_of_standard_i_o id3}@anchor{2a4}
@section FORM Strings
@@ -21584,7 +21648,7 @@ unrecognized keyword appears in a form string, it is silently ignored
and not considered invalid.
@node Direct_IO,Sequential_IO,FORM Strings,The Implementation of Standard I/O
-@anchor{gnat_rm/the_implementation_of_standard_i_o direct-io}@anchor{2a4}@anchor{gnat_rm/the_implementation_of_standard_i_o id4}@anchor{2a5}
+@anchor{gnat_rm/the_implementation_of_standard_i_o direct-io}@anchor{2a5}@anchor{gnat_rm/the_implementation_of_standard_i_o id4}@anchor{2a6}
@section Direct_IO
@@ -21604,7 +21668,7 @@ There is no limit on the size of Direct_IO files, they are expanded as
necessary to accommodate whatever records are written to the file.
@node Sequential_IO,Text_IO,Direct_IO,The Implementation of Standard I/O
-@anchor{gnat_rm/the_implementation_of_standard_i_o sequential-io}@anchor{2a6}@anchor{gnat_rm/the_implementation_of_standard_i_o id5}@anchor{2a7}
+@anchor{gnat_rm/the_implementation_of_standard_i_o sequential-io}@anchor{2a7}@anchor{gnat_rm/the_implementation_of_standard_i_o id5}@anchor{2a8}
@section Sequential_IO
@@ -21651,7 +21715,7 @@ using Stream_IO, and this is the preferred mechanism. In particular, the
above program fragment rewritten to use Stream_IO will work correctly.
@node Text_IO,Wide_Text_IO,Sequential_IO,The Implementation of Standard I/O
-@anchor{gnat_rm/the_implementation_of_standard_i_o id6}@anchor{2a8}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io}@anchor{2a9}
+@anchor{gnat_rm/the_implementation_of_standard_i_o id6}@anchor{2a9}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io}@anchor{2aa}
@section Text_IO
@@ -21734,7 +21798,7 @@ the file.
@end menu
@node Stream Pointer Positioning,Reading and Writing Non-Regular Files,,Text_IO
-@anchor{gnat_rm/the_implementation_of_standard_i_o id7}@anchor{2aa}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning}@anchor{2ab}
+@anchor{gnat_rm/the_implementation_of_standard_i_o id7}@anchor{2ab}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning}@anchor{2ac}
@subsection Stream Pointer Positioning
@@ -21770,7 +21834,7 @@ between two Ada files, then the difference may be observable in some
situations.
@node Reading and Writing Non-Regular Files,Get_Immediate,Stream Pointer Positioning,Text_IO
-@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files}@anchor{2ac}@anchor{gnat_rm/the_implementation_of_standard_i_o id8}@anchor{2ad}
+@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files}@anchor{2ad}@anchor{gnat_rm/the_implementation_of_standard_i_o id8}@anchor{2ae}
@subsection Reading and Writing Non-Regular Files
@@ -21821,7 +21885,7 @@ to read data past that end of
file indication, until another end of file indication is entered.
@node Get_Immediate,Treating Text_IO Files as Streams,Reading and Writing Non-Regular Files,Text_IO
-@anchor{gnat_rm/the_implementation_of_standard_i_o get-immediate}@anchor{2ae}@anchor{gnat_rm/the_implementation_of_standard_i_o id9}@anchor{2af}
+@anchor{gnat_rm/the_implementation_of_standard_i_o get-immediate}@anchor{2af}@anchor{gnat_rm/the_implementation_of_standard_i_o id9}@anchor{2b0}
@subsection Get_Immediate
@@ -21839,7 +21903,7 @@ possible), it is undefined whether the FF character will be treated as a
page mark.
@node Treating Text_IO Files as Streams,Text_IO Extensions,Get_Immediate,Text_IO
-@anchor{gnat_rm/the_implementation_of_standard_i_o id10}@anchor{2b0}@anchor{gnat_rm/the_implementation_of_standard_i_o treating-text-io-files-as-streams}@anchor{2b1}
+@anchor{gnat_rm/the_implementation_of_standard_i_o id10}@anchor{2b1}@anchor{gnat_rm/the_implementation_of_standard_i_o treating-text-io-files-as-streams}@anchor{2b2}
@subsection Treating Text_IO Files as Streams
@@ -21855,7 +21919,7 @@ skipped and the effect is similar to that described above for
@code{Get_Immediate}.
@node Text_IO Extensions,Text_IO Facilities for Unbounded Strings,Treating Text_IO Files as Streams,Text_IO
-@anchor{gnat_rm/the_implementation_of_standard_i_o id11}@anchor{2b2}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-extensions}@anchor{2b3}
+@anchor{gnat_rm/the_implementation_of_standard_i_o id11}@anchor{2b3}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-extensions}@anchor{2b4}
@subsection Text_IO Extensions
@@ -21883,7 +21947,7 @@ the string is to be read.
@end itemize
@node Text_IO Facilities for Unbounded Strings,,Text_IO Extensions,Text_IO
-@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-facilities-for-unbounded-strings}@anchor{2b4}@anchor{gnat_rm/the_implementation_of_standard_i_o id12}@anchor{2b5}
+@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-facilities-for-unbounded-strings}@anchor{2b5}@anchor{gnat_rm/the_implementation_of_standard_i_o id12}@anchor{2b6}
@subsection Text_IO Facilities for Unbounded Strings
@@ -21931,7 +21995,7 @@ files @code{a-szuzti.ads} and @code{a-szuzti.adb} provides similar extended
@code{Wide_Wide_Text_IO} functionality for unbounded wide wide strings.
@node Wide_Text_IO,Wide_Wide_Text_IO,Text_IO,The Implementation of Standard I/O
-@anchor{gnat_rm/the_implementation_of_standard_i_o wide-text-io}@anchor{2b6}@anchor{gnat_rm/the_implementation_of_standard_i_o id13}@anchor{2b7}
+@anchor{gnat_rm/the_implementation_of_standard_i_o wide-text-io}@anchor{2b7}@anchor{gnat_rm/the_implementation_of_standard_i_o id13}@anchor{2b8}
@section Wide_Text_IO
@@ -22178,12 +22242,12 @@ input also causes Constraint_Error to be raised.
@end menu
@node Stream Pointer Positioning<2>,Reading and Writing Non-Regular Files<2>,,Wide_Text_IO
-@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-1}@anchor{2b8}@anchor{gnat_rm/the_implementation_of_standard_i_o id14}@anchor{2b9}
+@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-1}@anchor{2b9}@anchor{gnat_rm/the_implementation_of_standard_i_o id14}@anchor{2ba}
@subsection Stream Pointer Positioning
@code{Ada.Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling
-of stream pointer positioning (@ref{2a9,,Text_IO}). There is one additional
+of stream pointer positioning (@ref{2aa,,Text_IO}). There is one additional
case:
If @code{Ada.Wide_Text_IO.Look_Ahead} reads a character outside the
@@ -22202,7 +22266,7 @@ to a normal program using @code{Wide_Text_IO}. However, this discrepancy
can be observed if the wide text file shares a stream with another file.
@node Reading and Writing Non-Regular Files<2>,,Stream Pointer Positioning<2>,Wide_Text_IO
-@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-1}@anchor{2ba}@anchor{gnat_rm/the_implementation_of_standard_i_o id15}@anchor{2bb}
+@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-1}@anchor{2bb}@anchor{gnat_rm/the_implementation_of_standard_i_o id15}@anchor{2bc}
@subsection Reading and Writing Non-Regular Files
@@ -22213,7 +22277,7 @@ treated as data characters), and @code{End_Of_Page} always returns
it is possible to read beyond an end of file.
@node Wide_Wide_Text_IO,Stream_IO,Wide_Text_IO,The Implementation of Standard I/O
-@anchor{gnat_rm/the_implementation_of_standard_i_o id16}@anchor{2bc}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-wide-text-io}@anchor{2bd}
+@anchor{gnat_rm/the_implementation_of_standard_i_o id16}@anchor{2bd}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-wide-text-io}@anchor{2be}
@section Wide_Wide_Text_IO
@@ -22382,12 +22446,12 @@ input also causes Constraint_Error to be raised.
@end menu
@node Stream Pointer Positioning<3>,Reading and Writing Non-Regular Files<3>,,Wide_Wide_Text_IO
-@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-2}@anchor{2be}@anchor{gnat_rm/the_implementation_of_standard_i_o id17}@anchor{2bf}
+@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-2}@anchor{2bf}@anchor{gnat_rm/the_implementation_of_standard_i_o id17}@anchor{2c0}
@subsection Stream Pointer Positioning
@code{Ada.Wide_Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling
-of stream pointer positioning (@ref{2a9,,Text_IO}). There is one additional
+of stream pointer positioning (@ref{2aa,,Text_IO}). There is one additional
case:
If @code{Ada.Wide_Wide_Text_IO.Look_Ahead} reads a character outside the
@@ -22406,7 +22470,7 @@ to a normal program using @code{Wide_Wide_Text_IO}. However, this discrepancy
can be observed if the wide text file shares a stream with another file.
@node Reading and Writing Non-Regular Files<3>,,Stream Pointer Positioning<3>,Wide_Wide_Text_IO
-@anchor{gnat_rm/the_implementation_of_standard_i_o id18}@anchor{2c0}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-2}@anchor{2c1}
+@anchor{gnat_rm/the_implementation_of_standard_i_o id18}@anchor{2c1}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-2}@anchor{2c2}
@subsection Reading and Writing Non-Regular Files
@@ -22417,7 +22481,7 @@ treated as data characters), and @code{End_Of_Page} always returns
it is possible to read beyond an end of file.
@node Stream_IO,Text Translation,Wide_Wide_Text_IO,The Implementation of Standard I/O
-@anchor{gnat_rm/the_implementation_of_standard_i_o id19}@anchor{2c2}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-io}@anchor{2c3}
+@anchor{gnat_rm/the_implementation_of_standard_i_o id19}@anchor{2c3}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-io}@anchor{2c4}
@section Stream_IO
@@ -22439,7 +22503,7 @@ manner described for stream attributes.
@end itemize
@node Text Translation,Shared Files,Stream_IO,The Implementation of Standard I/O
-@anchor{gnat_rm/the_implementation_of_standard_i_o id20}@anchor{2c4}@anchor{gnat_rm/the_implementation_of_standard_i_o text-translation}@anchor{2c5}
+@anchor{gnat_rm/the_implementation_of_standard_i_o id20}@anchor{2c5}@anchor{gnat_rm/the_implementation_of_standard_i_o text-translation}@anchor{2c6}
@section Text Translation
@@ -22473,7 +22537,7 @@ mode. (corresponds to_O_U16TEXT).
@end itemize
@node Shared Files,Filenames encoding,Text Translation,The Implementation of Standard I/O
-@anchor{gnat_rm/the_implementation_of_standard_i_o id21}@anchor{2c6}@anchor{gnat_rm/the_implementation_of_standard_i_o shared-files}@anchor{2c7}
+@anchor{gnat_rm/the_implementation_of_standard_i_o id21}@anchor{2c7}@anchor{gnat_rm/the_implementation_of_standard_i_o shared-files}@anchor{2c8}
@section Shared Files
@@ -22536,7 +22600,7 @@ heterogeneous input-output. Although this approach will work in GNAT if
for this purpose (using the stream attributes)
@node Filenames encoding,File content encoding,Shared Files,The Implementation of Standard I/O
-@anchor{gnat_rm/the_implementation_of_standard_i_o filenames-encoding}@anchor{2c8}@anchor{gnat_rm/the_implementation_of_standard_i_o id22}@anchor{2c9}
+@anchor{gnat_rm/the_implementation_of_standard_i_o filenames-encoding}@anchor{2c9}@anchor{gnat_rm/the_implementation_of_standard_i_o id22}@anchor{2ca}
@section Filenames encoding
@@ -22576,7 +22640,7 @@ platform. On the other Operating Systems the run-time is supporting
UTF-8 natively.
@node File content encoding,Open Modes,Filenames encoding,The Implementation of Standard I/O
-@anchor{gnat_rm/the_implementation_of_standard_i_o file-content-encoding}@anchor{2ca}@anchor{gnat_rm/the_implementation_of_standard_i_o id23}@anchor{2cb}
+@anchor{gnat_rm/the_implementation_of_standard_i_o file-content-encoding}@anchor{2cb}@anchor{gnat_rm/the_implementation_of_standard_i_o id23}@anchor{2cc}
@section File content encoding
@@ -22609,7 +22673,7 @@ Unicode 8-bit encoding
This encoding is only supported on the Windows platform.
@node Open Modes,Operations on C Streams,File content encoding,The Implementation of Standard I/O
-@anchor{gnat_rm/the_implementation_of_standard_i_o open-modes}@anchor{2cc}@anchor{gnat_rm/the_implementation_of_standard_i_o id24}@anchor{2cd}
+@anchor{gnat_rm/the_implementation_of_standard_i_o open-modes}@anchor{2cd}@anchor{gnat_rm/the_implementation_of_standard_i_o id24}@anchor{2ce}
@section Open Modes
@@ -22712,7 +22776,7 @@ subsequently requires switching from reading to writing or vice-versa,
then the file is reopened in @code{r+} mode to permit the required operation.
@node Operations on C Streams,Interfacing to C Streams,Open Modes,The Implementation of Standard I/O
-@anchor{gnat_rm/the_implementation_of_standard_i_o operations-on-c-streams}@anchor{2ce}@anchor{gnat_rm/the_implementation_of_standard_i_o id25}@anchor{2cf}
+@anchor{gnat_rm/the_implementation_of_standard_i_o operations-on-c-streams}@anchor{2cf}@anchor{gnat_rm/the_implementation_of_standard_i_o id25}@anchor{2d0}
@section Operations on C Streams
@@ -22872,7 +22936,7 @@ end Interfaces.C_Streams;
@end example
@node Interfacing to C Streams,,Operations on C Streams,The Implementation of Standard I/O
-@anchor{gnat_rm/the_implementation_of_standard_i_o interfacing-to-c-streams}@anchor{2d0}@anchor{gnat_rm/the_implementation_of_standard_i_o id26}@anchor{2d1}
+@anchor{gnat_rm/the_implementation_of_standard_i_o interfacing-to-c-streams}@anchor{2d1}@anchor{gnat_rm/the_implementation_of_standard_i_o id26}@anchor{2d2}
@section Interfacing to C Streams
@@ -22965,7 +23029,7 @@ imported from a C program, allowing an Ada file to operate on an
existing C file.
@node The GNAT Library,Interfacing to Other Languages,The Implementation of Standard I/O,Top
-@anchor{gnat_rm/the_gnat_library the-gnat-library}@anchor{10}@anchor{gnat_rm/the_gnat_library doc}@anchor{2d2}@anchor{gnat_rm/the_gnat_library id1}@anchor{2d3}
+@anchor{gnat_rm/the_gnat_library the-gnat-library}@anchor{10}@anchor{gnat_rm/the_gnat_library doc}@anchor{2d3}@anchor{gnat_rm/the_gnat_library id1}@anchor{2d4}
@chapter The GNAT Library
@@ -23158,7 +23222,7 @@ of GNAT, and will generate a warning message.
@end menu
@node Ada Characters Latin_9 a-chlat9 ads,Ada Characters Wide_Latin_1 a-cwila1 ads,,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id2}@anchor{2d4}@anchor{gnat_rm/the_gnat_library ada-characters-latin-9-a-chlat9-ads}@anchor{2d5}
+@anchor{gnat_rm/the_gnat_library id2}@anchor{2d5}@anchor{gnat_rm/the_gnat_library ada-characters-latin-9-a-chlat9-ads}@anchor{2d6}
@section @code{Ada.Characters.Latin_9} (@code{a-chlat9.ads})
@@ -23175,7 +23239,7 @@ is specifically authorized by the Ada Reference Manual
(RM A.3.3(27)).
@node Ada Characters Wide_Latin_1 a-cwila1 ads,Ada Characters Wide_Latin_9 a-cwila1 ads,Ada Characters Latin_9 a-chlat9 ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-1-a-cwila1-ads}@anchor{2d6}@anchor{gnat_rm/the_gnat_library id3}@anchor{2d7}
+@anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-1-a-cwila1-ads}@anchor{2d7}@anchor{gnat_rm/the_gnat_library id3}@anchor{2d8}
@section @code{Ada.Characters.Wide_Latin_1} (@code{a-cwila1.ads})
@@ -23192,7 +23256,7 @@ is specifically authorized by the Ada Reference Manual
(RM A.3.3(27)).
@node Ada Characters Wide_Latin_9 a-cwila1 ads,Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,Ada Characters Wide_Latin_1 a-cwila1 ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id4}@anchor{2d8}@anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-9-a-cwila1-ads}@anchor{2d9}
+@anchor{gnat_rm/the_gnat_library id4}@anchor{2d9}@anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-9-a-cwila1-ads}@anchor{2da}
@section @code{Ada.Characters.Wide_Latin_9} (@code{a-cwila1.ads})
@@ -23209,7 +23273,7 @@ is specifically authorized by the Ada Reference Manual
(RM A.3.3(27)).
@node Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,Ada Characters Wide_Latin_9 a-cwila1 ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-1-a-chzla1-ads}@anchor{2da}@anchor{gnat_rm/the_gnat_library id5}@anchor{2db}
+@anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-1-a-chzla1-ads}@anchor{2db}@anchor{gnat_rm/the_gnat_library id5}@anchor{2dc}
@section @code{Ada.Characters.Wide_Wide_Latin_1} (@code{a-chzla1.ads})
@@ -23226,7 +23290,7 @@ is specifically authorized by the Ada Reference Manual
(RM A.3.3(27)).
@node Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,Ada Containers Formal_Doubly_Linked_Lists a-cfdlli ads,Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-9-a-chzla9-ads}@anchor{2dc}@anchor{gnat_rm/the_gnat_library id6}@anchor{2dd}
+@anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-9-a-chzla9-ads}@anchor{2dd}@anchor{gnat_rm/the_gnat_library id6}@anchor{2de}
@section @code{Ada.Characters.Wide_Wide_Latin_9} (@code{a-chzla9.ads})
@@ -23243,7 +23307,7 @@ is specifically authorized by the Ada Reference Manual
(RM A.3.3(27)).
@node Ada Containers Formal_Doubly_Linked_Lists a-cfdlli ads,Ada Containers Formal_Hashed_Maps a-cfhama ads,Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id7}@anchor{2de}@anchor{gnat_rm/the_gnat_library ada-containers-formal-doubly-linked-lists-a-cfdlli-ads}@anchor{2df}
+@anchor{gnat_rm/the_gnat_library id7}@anchor{2df}@anchor{gnat_rm/the_gnat_library ada-containers-formal-doubly-linked-lists-a-cfdlli-ads}@anchor{2e0}
@section @code{Ada.Containers.Formal_Doubly_Linked_Lists} (@code{a-cfdlli.ads})
@@ -23262,7 +23326,7 @@ efficient version than the one defined in the standard. In particular it
does not have the complex overhead required to detect cursor tampering.
@node Ada Containers Formal_Hashed_Maps a-cfhama ads,Ada Containers Formal_Hashed_Sets a-cfhase ads,Ada Containers Formal_Doubly_Linked_Lists a-cfdlli ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id8}@anchor{2e0}@anchor{gnat_rm/the_gnat_library ada-containers-formal-hashed-maps-a-cfhama-ads}@anchor{2e1}
+@anchor{gnat_rm/the_gnat_library id8}@anchor{2e1}@anchor{gnat_rm/the_gnat_library ada-containers-formal-hashed-maps-a-cfhama-ads}@anchor{2e2}
@section @code{Ada.Containers.Formal_Hashed_Maps} (@code{a-cfhama.ads})
@@ -23281,7 +23345,7 @@ efficient version than the one defined in the standard. In particular it
does not have the complex overhead required to detect cursor tampering.
@node Ada Containers Formal_Hashed_Sets a-cfhase ads,Ada Containers Formal_Ordered_Maps a-cforma ads,Ada Containers Formal_Hashed_Maps a-cfhama ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id9}@anchor{2e2}@anchor{gnat_rm/the_gnat_library ada-containers-formal-hashed-sets-a-cfhase-ads}@anchor{2e3}
+@anchor{gnat_rm/the_gnat_library id9}@anchor{2e3}@anchor{gnat_rm/the_gnat_library ada-containers-formal-hashed-sets-a-cfhase-ads}@anchor{2e4}
@section @code{Ada.Containers.Formal_Hashed_Sets} (@code{a-cfhase.ads})
@@ -23300,7 +23364,7 @@ efficient version than the one defined in the standard. In particular it
does not have the complex overhead required to detect cursor tampering.
@node Ada Containers Formal_Ordered_Maps a-cforma ads,Ada Containers Formal_Ordered_Sets a-cforse ads,Ada Containers Formal_Hashed_Sets a-cfhase ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id10}@anchor{2e4}@anchor{gnat_rm/the_gnat_library ada-containers-formal-ordered-maps-a-cforma-ads}@anchor{2e5}
+@anchor{gnat_rm/the_gnat_library id10}@anchor{2e5}@anchor{gnat_rm/the_gnat_library ada-containers-formal-ordered-maps-a-cforma-ads}@anchor{2e6}
@section @code{Ada.Containers.Formal_Ordered_Maps} (@code{a-cforma.ads})
@@ -23319,7 +23383,7 @@ efficient version than the one defined in the standard. In particular it
does not have the complex overhead required to detect cursor tampering.
@node Ada Containers Formal_Ordered_Sets a-cforse ads,Ada Containers Formal_Vectors a-cofove ads,Ada Containers Formal_Ordered_Maps a-cforma ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library ada-containers-formal-ordered-sets-a-cforse-ads}@anchor{2e6}@anchor{gnat_rm/the_gnat_library id11}@anchor{2e7}
+@anchor{gnat_rm/the_gnat_library ada-containers-formal-ordered-sets-a-cforse-ads}@anchor{2e7}@anchor{gnat_rm/the_gnat_library id11}@anchor{2e8}
@section @code{Ada.Containers.Formal_Ordered_Sets} (@code{a-cforse.ads})
@@ -23338,7 +23402,7 @@ efficient version than the one defined in the standard. In particular it
does not have the complex overhead required to detect cursor tampering.
@node Ada Containers Formal_Vectors a-cofove ads,Ada Containers Formal_Indefinite_Vectors a-cfinve ads,Ada Containers Formal_Ordered_Sets a-cforse ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id12}@anchor{2e8}@anchor{gnat_rm/the_gnat_library ada-containers-formal-vectors-a-cofove-ads}@anchor{2e9}
+@anchor{gnat_rm/the_gnat_library id12}@anchor{2e9}@anchor{gnat_rm/the_gnat_library ada-containers-formal-vectors-a-cofove-ads}@anchor{2ea}
@section @code{Ada.Containers.Formal_Vectors} (@code{a-cofove.ads})
@@ -23357,7 +23421,7 @@ efficient version than the one defined in the standard. In particular it
does not have the complex overhead required to detect cursor tampering.
@node Ada Containers Formal_Indefinite_Vectors a-cfinve ads,Ada Containers Functional_Vectors a-cofuve ads,Ada Containers Formal_Vectors a-cofove ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id13}@anchor{2ea}@anchor{gnat_rm/the_gnat_library ada-containers-formal-indefinite-vectors-a-cfinve-ads}@anchor{2eb}
+@anchor{gnat_rm/the_gnat_library id13}@anchor{2eb}@anchor{gnat_rm/the_gnat_library ada-containers-formal-indefinite-vectors-a-cfinve-ads}@anchor{2ec}
@section @code{Ada.Containers.Formal_Indefinite_Vectors} (@code{a-cfinve.ads})
@@ -23376,7 +23440,7 @@ efficient version than the one defined in the standard. In particular it
does not have the complex overhead required to detect cursor tampering.
@node Ada Containers Functional_Vectors a-cofuve ads,Ada Containers Functional_Sets a-cofuse ads,Ada Containers Formal_Indefinite_Vectors a-cfinve ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id14}@anchor{2ec}@anchor{gnat_rm/the_gnat_library ada-containers-functional-vectors-a-cofuve-ads}@anchor{2ed}
+@anchor{gnat_rm/the_gnat_library id14}@anchor{2ed}@anchor{gnat_rm/the_gnat_library ada-containers-functional-vectors-a-cofuve-ads}@anchor{2ee}
@section @code{Ada.Containers.Functional_Vectors} (@code{a-cofuve.ads})
@@ -23398,7 +23462,7 @@ and annotations, so that they can be removed from the final executable. The
specification of this unit is compatible with SPARK 2014.
@node Ada Containers Functional_Sets a-cofuse ads,Ada Containers Functional_Maps a-cofuma ads,Ada Containers Functional_Vectors a-cofuve ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library ada-containers-functional-sets-a-cofuse-ads}@anchor{2ee}@anchor{gnat_rm/the_gnat_library id15}@anchor{2ef}
+@anchor{gnat_rm/the_gnat_library ada-containers-functional-sets-a-cofuse-ads}@anchor{2ef}@anchor{gnat_rm/the_gnat_library id15}@anchor{2f0}
@section @code{Ada.Containers.Functional_Sets} (@code{a-cofuse.ads})
@@ -23420,7 +23484,7 @@ and annotations, so that they can be removed from the final executable. The
specification of this unit is compatible with SPARK 2014.
@node Ada Containers Functional_Maps a-cofuma ads,Ada Containers Bounded_Holders a-coboho ads,Ada Containers Functional_Sets a-cofuse ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id16}@anchor{2f0}@anchor{gnat_rm/the_gnat_library ada-containers-functional-maps-a-cofuma-ads}@anchor{2f1}
+@anchor{gnat_rm/the_gnat_library id16}@anchor{2f1}@anchor{gnat_rm/the_gnat_library ada-containers-functional-maps-a-cofuma-ads}@anchor{2f2}
@section @code{Ada.Containers.Functional_Maps} (@code{a-cofuma.ads})
@@ -23442,7 +23506,7 @@ and annotations, so that they can be removed from the final executable. The
specification of this unit is compatible with SPARK 2014.
@node Ada Containers Bounded_Holders a-coboho ads,Ada Command_Line Environment a-colien ads,Ada Containers Functional_Maps a-cofuma ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library ada-containers-bounded-holders-a-coboho-ads}@anchor{2f2}@anchor{gnat_rm/the_gnat_library id17}@anchor{2f3}
+@anchor{gnat_rm/the_gnat_library ada-containers-bounded-holders-a-coboho-ads}@anchor{2f3}@anchor{gnat_rm/the_gnat_library id17}@anchor{2f4}
@section @code{Ada.Containers.Bounded_Holders} (@code{a-coboho.ads})
@@ -23454,7 +23518,7 @@ This child of @code{Ada.Containers} defines a modified version of
Indefinite_Holders that avoids heap allocation.
@node Ada Command_Line Environment a-colien ads,Ada Command_Line Remove a-colire ads,Ada Containers Bounded_Holders a-coboho ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library ada-command-line-environment-a-colien-ads}@anchor{2f4}@anchor{gnat_rm/the_gnat_library id18}@anchor{2f5}
+@anchor{gnat_rm/the_gnat_library ada-command-line-environment-a-colien-ads}@anchor{2f5}@anchor{gnat_rm/the_gnat_library id18}@anchor{2f6}
@section @code{Ada.Command_Line.Environment} (@code{a-colien.ads})
@@ -23467,7 +23531,7 @@ provides a mechanism for obtaining environment values on systems
where this concept makes sense.
@node Ada Command_Line Remove a-colire ads,Ada Command_Line Response_File a-clrefi ads,Ada Command_Line Environment a-colien ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id19}@anchor{2f6}@anchor{gnat_rm/the_gnat_library ada-command-line-remove-a-colire-ads}@anchor{2f7}
+@anchor{gnat_rm/the_gnat_library id19}@anchor{2f7}@anchor{gnat_rm/the_gnat_library ada-command-line-remove-a-colire-ads}@anchor{2f8}
@section @code{Ada.Command_Line.Remove} (@code{a-colire.ads})
@@ -23485,7 +23549,7 @@ to further calls on the subprograms in @code{Ada.Command_Line} will not
see the removed argument.
@node Ada Command_Line Response_File a-clrefi ads,Ada Direct_IO C_Streams a-diocst ads,Ada Command_Line Remove a-colire ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id20}@anchor{2f8}@anchor{gnat_rm/the_gnat_library ada-command-line-response-file-a-clrefi-ads}@anchor{2f9}
+@anchor{gnat_rm/the_gnat_library id20}@anchor{2f9}@anchor{gnat_rm/the_gnat_library ada-command-line-response-file-a-clrefi-ads}@anchor{2fa}
@section @code{Ada.Command_Line.Response_File} (@code{a-clrefi.ads})
@@ -23505,7 +23569,7 @@ Using a response file allow passing a set of arguments to an executable longer
than the maximum allowed by the system on the command line.
@node Ada Direct_IO C_Streams a-diocst ads,Ada Exceptions Is_Null_Occurrence a-einuoc ads,Ada Command_Line Response_File a-clrefi ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id21}@anchor{2fa}@anchor{gnat_rm/the_gnat_library ada-direct-io-c-streams-a-diocst-ads}@anchor{2fb}
+@anchor{gnat_rm/the_gnat_library id21}@anchor{2fb}@anchor{gnat_rm/the_gnat_library ada-direct-io-c-streams-a-diocst-ads}@anchor{2fc}
@section @code{Ada.Direct_IO.C_Streams} (@code{a-diocst.ads})
@@ -23520,7 +23584,7 @@ extracted from a file opened on the Ada side, and an Ada file
can be constructed from a stream opened on the C side.
@node Ada Exceptions Is_Null_Occurrence a-einuoc ads,Ada Exceptions Last_Chance_Handler a-elchha ads,Ada Direct_IO C_Streams a-diocst ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id22}@anchor{2fc}@anchor{gnat_rm/the_gnat_library ada-exceptions-is-null-occurrence-a-einuoc-ads}@anchor{2fd}
+@anchor{gnat_rm/the_gnat_library id22}@anchor{2fd}@anchor{gnat_rm/the_gnat_library ada-exceptions-is-null-occurrence-a-einuoc-ads}@anchor{2fe}
@section @code{Ada.Exceptions.Is_Null_Occurrence} (@code{a-einuoc.ads})
@@ -23534,7 +23598,7 @@ exception occurrence (@code{Null_Occurrence}) without raising
an exception.
@node Ada Exceptions Last_Chance_Handler a-elchha ads,Ada Exceptions Traceback a-exctra ads,Ada Exceptions Is_Null_Occurrence a-einuoc ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id23}@anchor{2fe}@anchor{gnat_rm/the_gnat_library ada-exceptions-last-chance-handler-a-elchha-ads}@anchor{2ff}
+@anchor{gnat_rm/the_gnat_library id23}@anchor{2ff}@anchor{gnat_rm/the_gnat_library ada-exceptions-last-chance-handler-a-elchha-ads}@anchor{300}
@section @code{Ada.Exceptions.Last_Chance_Handler} (@code{a-elchha.ads})
@@ -23548,7 +23612,7 @@ exceptions (hence the name last chance), and perform clean ups before
terminating the program. Note that this subprogram never returns.
@node Ada Exceptions Traceback a-exctra ads,Ada Sequential_IO C_Streams a-siocst ads,Ada Exceptions Last_Chance_Handler a-elchha ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library ada-exceptions-traceback-a-exctra-ads}@anchor{300}@anchor{gnat_rm/the_gnat_library id24}@anchor{301}
+@anchor{gnat_rm/the_gnat_library ada-exceptions-traceback-a-exctra-ads}@anchor{301}@anchor{gnat_rm/the_gnat_library id24}@anchor{302}
@section @code{Ada.Exceptions.Traceback} (@code{a-exctra.ads})
@@ -23561,7 +23625,7 @@ give a traceback array of addresses based on an exception
occurrence.
@node Ada Sequential_IO C_Streams a-siocst ads,Ada Streams Stream_IO C_Streams a-ssicst ads,Ada Exceptions Traceback a-exctra ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library ada-sequential-io-c-streams-a-siocst-ads}@anchor{302}@anchor{gnat_rm/the_gnat_library id25}@anchor{303}
+@anchor{gnat_rm/the_gnat_library ada-sequential-io-c-streams-a-siocst-ads}@anchor{303}@anchor{gnat_rm/the_gnat_library id25}@anchor{304}
@section @code{Ada.Sequential_IO.C_Streams} (@code{a-siocst.ads})
@@ -23576,7 +23640,7 @@ extracted from a file opened on the Ada side, and an Ada file
can be constructed from a stream opened on the C side.
@node Ada Streams Stream_IO C_Streams a-ssicst ads,Ada Strings Unbounded Text_IO a-suteio ads,Ada Sequential_IO C_Streams a-siocst ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id26}@anchor{304}@anchor{gnat_rm/the_gnat_library ada-streams-stream-io-c-streams-a-ssicst-ads}@anchor{305}
+@anchor{gnat_rm/the_gnat_library id26}@anchor{305}@anchor{gnat_rm/the_gnat_library ada-streams-stream-io-c-streams-a-ssicst-ads}@anchor{306}
@section @code{Ada.Streams.Stream_IO.C_Streams} (@code{a-ssicst.ads})
@@ -23591,7 +23655,7 @@ extracted from a file opened on the Ada side, and an Ada file
can be constructed from a stream opened on the C side.
@node Ada Strings Unbounded Text_IO a-suteio ads,Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,Ada Streams Stream_IO C_Streams a-ssicst ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library ada-strings-unbounded-text-io-a-suteio-ads}@anchor{306}@anchor{gnat_rm/the_gnat_library id27}@anchor{307}
+@anchor{gnat_rm/the_gnat_library ada-strings-unbounded-text-io-a-suteio-ads}@anchor{307}@anchor{gnat_rm/the_gnat_library id27}@anchor{308}
@section @code{Ada.Strings.Unbounded.Text_IO} (@code{a-suteio.ads})
@@ -23608,7 +23672,7 @@ strings, avoiding the necessity for an intermediate operation
with ordinary strings.
@node Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Strings Unbounded Text_IO a-suteio ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id28}@anchor{308}@anchor{gnat_rm/the_gnat_library ada-strings-wide-unbounded-wide-text-io-a-swuwti-ads}@anchor{309}
+@anchor{gnat_rm/the_gnat_library id28}@anchor{309}@anchor{gnat_rm/the_gnat_library ada-strings-wide-unbounded-wide-text-io-a-swuwti-ads}@anchor{30a}
@section @code{Ada.Strings.Wide_Unbounded.Wide_Text_IO} (@code{a-swuwti.ads})
@@ -23625,7 +23689,7 @@ wide strings, avoiding the necessity for an intermediate operation
with ordinary wide strings.
@node Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Text_IO C_Streams a-tiocst ads,Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id29}@anchor{30a}@anchor{gnat_rm/the_gnat_library ada-strings-wide-wide-unbounded-wide-wide-text-io-a-szuzti-ads}@anchor{30b}
+@anchor{gnat_rm/the_gnat_library id29}@anchor{30b}@anchor{gnat_rm/the_gnat_library ada-strings-wide-wide-unbounded-wide-wide-text-io-a-szuzti-ads}@anchor{30c}
@section @code{Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO} (@code{a-szuzti.ads})
@@ -23642,7 +23706,7 @@ wide wide strings, avoiding the necessity for an intermediate operation
with ordinary wide wide strings.
@node Ada Text_IO C_Streams a-tiocst ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library ada-text-io-c-streams-a-tiocst-ads}@anchor{30c}@anchor{gnat_rm/the_gnat_library id30}@anchor{30d}
+@anchor{gnat_rm/the_gnat_library ada-text-io-c-streams-a-tiocst-ads}@anchor{30d}@anchor{gnat_rm/the_gnat_library id30}@anchor{30e}
@section @code{Ada.Text_IO.C_Streams} (@code{a-tiocst.ads})
@@ -23657,7 +23721,7 @@ extracted from a file opened on the Ada side, and an Ada file
can be constructed from a stream opened on the C side.
@node Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Wide_Characters Unicode a-wichun ads,Ada Text_IO C_Streams a-tiocst ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library ada-text-io-reset-standard-files-a-tirsfi-ads}@anchor{30e}@anchor{gnat_rm/the_gnat_library id31}@anchor{30f}
+@anchor{gnat_rm/the_gnat_library ada-text-io-reset-standard-files-a-tirsfi-ads}@anchor{30f}@anchor{gnat_rm/the_gnat_library id31}@anchor{310}
@section @code{Ada.Text_IO.Reset_Standard_Files} (@code{a-tirsfi.ads})
@@ -23672,7 +23736,7 @@ execution (for example a standard input file may be redefined to be
interactive).
@node Ada Wide_Characters Unicode a-wichun ads,Ada Wide_Text_IO C_Streams a-wtcstr ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id32}@anchor{310}@anchor{gnat_rm/the_gnat_library ada-wide-characters-unicode-a-wichun-ads}@anchor{311}
+@anchor{gnat_rm/the_gnat_library id32}@anchor{311}@anchor{gnat_rm/the_gnat_library ada-wide-characters-unicode-a-wichun-ads}@anchor{312}
@section @code{Ada.Wide_Characters.Unicode} (@code{a-wichun.ads})
@@ -23685,7 +23749,7 @@ This package provides subprograms that allow categorization of
Wide_Character values according to Unicode categories.
@node Ada Wide_Text_IO C_Streams a-wtcstr ads,Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,Ada Wide_Characters Unicode a-wichun ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library ada-wide-text-io-c-streams-a-wtcstr-ads}@anchor{312}@anchor{gnat_rm/the_gnat_library id33}@anchor{313}
+@anchor{gnat_rm/the_gnat_library ada-wide-text-io-c-streams-a-wtcstr-ads}@anchor{313}@anchor{gnat_rm/the_gnat_library id33}@anchor{314}
@section @code{Ada.Wide_Text_IO.C_Streams} (@code{a-wtcstr.ads})
@@ -23700,7 +23764,7 @@ extracted from a file opened on the Ada side, and an Ada file
can be constructed from a stream opened on the C side.
@node Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,Ada Wide_Wide_Characters Unicode a-zchuni ads,Ada Wide_Text_IO C_Streams a-wtcstr ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library ada-wide-text-io-reset-standard-files-a-wrstfi-ads}@anchor{314}@anchor{gnat_rm/the_gnat_library id34}@anchor{315}
+@anchor{gnat_rm/the_gnat_library ada-wide-text-io-reset-standard-files-a-wrstfi-ads}@anchor{315}@anchor{gnat_rm/the_gnat_library id34}@anchor{316}
@section @code{Ada.Wide_Text_IO.Reset_Standard_Files} (@code{a-wrstfi.ads})
@@ -23715,7 +23779,7 @@ execution (for example a standard input file may be redefined to be
interactive).
@node Ada Wide_Wide_Characters Unicode a-zchuni ads,Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id35}@anchor{316}@anchor{gnat_rm/the_gnat_library ada-wide-wide-characters-unicode-a-zchuni-ads}@anchor{317}
+@anchor{gnat_rm/the_gnat_library id35}@anchor{317}@anchor{gnat_rm/the_gnat_library ada-wide-wide-characters-unicode-a-zchuni-ads}@anchor{318}
@section @code{Ada.Wide_Wide_Characters.Unicode} (@code{a-zchuni.ads})
@@ -23728,7 +23792,7 @@ This package provides subprograms that allow categorization of
Wide_Wide_Character values according to Unicode categories.
@node Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,Ada Wide_Wide_Characters Unicode a-zchuni ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id36}@anchor{318}@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-c-streams-a-ztcstr-ads}@anchor{319}
+@anchor{gnat_rm/the_gnat_library id36}@anchor{319}@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-c-streams-a-ztcstr-ads}@anchor{31a}
@section @code{Ada.Wide_Wide_Text_IO.C_Streams} (@code{a-ztcstr.ads})
@@ -23743,7 +23807,7 @@ extracted from a file opened on the Ada side, and an Ada file
can be constructed from a stream opened on the C side.
@node Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,GNAT Altivec g-altive ads,Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id37}@anchor{31a}@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-reset-standard-files-a-zrstfi-ads}@anchor{31b}
+@anchor{gnat_rm/the_gnat_library id37}@anchor{31b}@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-reset-standard-files-a-zrstfi-ads}@anchor{31c}
@section @code{Ada.Wide_Wide_Text_IO.Reset_Standard_Files} (@code{a-zrstfi.ads})
@@ -23758,7 +23822,7 @@ change during execution (for example a standard input file may be
redefined to be interactive).
@node GNAT Altivec g-altive ads,GNAT Altivec Conversions g-altcon ads,Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-altivec-g-altive-ads}@anchor{31c}@anchor{gnat_rm/the_gnat_library id38}@anchor{31d}
+@anchor{gnat_rm/the_gnat_library gnat-altivec-g-altive-ads}@anchor{31d}@anchor{gnat_rm/the_gnat_library id38}@anchor{31e}
@section @code{GNAT.Altivec} (@code{g-altive.ads})
@@ -23771,7 +23835,7 @@ definitions of constants and types common to all the versions of the
binding.
@node GNAT Altivec Conversions g-altcon ads,GNAT Altivec Vector_Operations g-alveop ads,GNAT Altivec g-altive ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-altivec-conversions-g-altcon-ads}@anchor{31e}@anchor{gnat_rm/the_gnat_library id39}@anchor{31f}
+@anchor{gnat_rm/the_gnat_library gnat-altivec-conversions-g-altcon-ads}@anchor{31f}@anchor{gnat_rm/the_gnat_library id39}@anchor{320}
@section @code{GNAT.Altivec.Conversions} (@code{g-altcon.ads})
@@ -23782,7 +23846,7 @@ binding.
This package provides the Vector/View conversion routines.
@node GNAT Altivec Vector_Operations g-alveop ads,GNAT Altivec Vector_Types g-alvety ads,GNAT Altivec Conversions g-altcon ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-operations-g-alveop-ads}@anchor{320}@anchor{gnat_rm/the_gnat_library id40}@anchor{321}
+@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-operations-g-alveop-ads}@anchor{321}@anchor{gnat_rm/the_gnat_library id40}@anchor{322}
@section @code{GNAT.Altivec.Vector_Operations} (@code{g-alveop.ads})
@@ -23796,7 +23860,7 @@ library. The hard binding is provided as a separate package. This unit
is common to both bindings.
@node GNAT Altivec Vector_Types g-alvety ads,GNAT Altivec Vector_Views g-alvevi ads,GNAT Altivec Vector_Operations g-alveop ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-types-g-alvety-ads}@anchor{322}@anchor{gnat_rm/the_gnat_library id41}@anchor{323}
+@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-types-g-alvety-ads}@anchor{323}@anchor{gnat_rm/the_gnat_library id41}@anchor{324}
@section @code{GNAT.Altivec.Vector_Types} (@code{g-alvety.ads})
@@ -23808,7 +23872,7 @@ This package exposes the various vector types part of the Ada binding
to AltiVec facilities.
@node GNAT Altivec Vector_Views g-alvevi ads,GNAT Array_Split g-arrspl ads,GNAT Altivec Vector_Types g-alvety ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-views-g-alvevi-ads}@anchor{324}@anchor{gnat_rm/the_gnat_library id42}@anchor{325}
+@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-views-g-alvevi-ads}@anchor{325}@anchor{gnat_rm/the_gnat_library id42}@anchor{326}
@section @code{GNAT.Altivec.Vector_Views} (@code{g-alvevi.ads})
@@ -23823,7 +23887,7 @@ vector elements and provides a simple way to initialize vector
objects.
@node GNAT Array_Split g-arrspl ads,GNAT AWK g-awk ads,GNAT Altivec Vector_Views g-alvevi ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-array-split-g-arrspl-ads}@anchor{326}@anchor{gnat_rm/the_gnat_library id43}@anchor{327}
+@anchor{gnat_rm/the_gnat_library gnat-array-split-g-arrspl-ads}@anchor{327}@anchor{gnat_rm/the_gnat_library id43}@anchor{328}
@section @code{GNAT.Array_Split} (@code{g-arrspl.ads})
@@ -23836,7 +23900,7 @@ an array wherever the separators appear, and provide direct access
to the resulting slices.
@node GNAT AWK g-awk ads,GNAT Bind_Environment g-binenv ads,GNAT Array_Split g-arrspl ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id44}@anchor{328}@anchor{gnat_rm/the_gnat_library gnat-awk-g-awk-ads}@anchor{329}
+@anchor{gnat_rm/the_gnat_library id44}@anchor{329}@anchor{gnat_rm/the_gnat_library gnat-awk-g-awk-ads}@anchor{32a}
@section @code{GNAT.AWK} (@code{g-awk.ads})
@@ -23851,7 +23915,7 @@ or more files containing formatted data. The file is viewed as a database
where each record is a line and a field is a data element in this line.
@node GNAT Bind_Environment g-binenv ads,GNAT Branch_Prediction g-brapre ads,GNAT AWK g-awk ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-bind-environment-g-binenv-ads}@anchor{32a}@anchor{gnat_rm/the_gnat_library id45}@anchor{32b}
+@anchor{gnat_rm/the_gnat_library gnat-bind-environment-g-binenv-ads}@anchor{32b}@anchor{gnat_rm/the_gnat_library id45}@anchor{32c}
@section @code{GNAT.Bind_Environment} (@code{g-binenv.ads})
@@ -23864,7 +23928,7 @@ These associations can be specified using the @code{-V} binder command
line switch.
@node GNAT Branch_Prediction g-brapre ads,GNAT Bounded_Buffers g-boubuf ads,GNAT Bind_Environment g-binenv ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id46}@anchor{32c}@anchor{gnat_rm/the_gnat_library gnat-branch-prediction-g-brapre-ads}@anchor{32d}
+@anchor{gnat_rm/the_gnat_library id46}@anchor{32d}@anchor{gnat_rm/the_gnat_library gnat-branch-prediction-g-brapre-ads}@anchor{32e}
@section @code{GNAT.Branch_Prediction} (@code{g-brapre.ads})
@@ -23875,7 +23939,7 @@ line switch.
Provides routines giving hints to the branch predictor of the code generator.
@node GNAT Bounded_Buffers g-boubuf ads,GNAT Bounded_Mailboxes g-boumai ads,GNAT Branch_Prediction g-brapre ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id47}@anchor{32e}@anchor{gnat_rm/the_gnat_library gnat-bounded-buffers-g-boubuf-ads}@anchor{32f}
+@anchor{gnat_rm/the_gnat_library id47}@anchor{32f}@anchor{gnat_rm/the_gnat_library gnat-bounded-buffers-g-boubuf-ads}@anchor{330}
@section @code{GNAT.Bounded_Buffers} (@code{g-boubuf.ads})
@@ -23890,7 +23954,7 @@ useful directly or as parts of the implementations of other abstractions,
such as mailboxes.
@node GNAT Bounded_Mailboxes g-boumai ads,GNAT Bubble_Sort g-bubsor ads,GNAT Bounded_Buffers g-boubuf ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-bounded-mailboxes-g-boumai-ads}@anchor{330}@anchor{gnat_rm/the_gnat_library id48}@anchor{331}
+@anchor{gnat_rm/the_gnat_library gnat-bounded-mailboxes-g-boumai-ads}@anchor{331}@anchor{gnat_rm/the_gnat_library id48}@anchor{332}
@section @code{GNAT.Bounded_Mailboxes} (@code{g-boumai.ads})
@@ -23903,7 +23967,7 @@ such as mailboxes.
Provides a thread-safe asynchronous intertask mailbox communication facility.
@node GNAT Bubble_Sort g-bubsor ads,GNAT Bubble_Sort_A g-busora ads,GNAT Bounded_Mailboxes g-boumai ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-bubsor-ads}@anchor{332}@anchor{gnat_rm/the_gnat_library id49}@anchor{333}
+@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-bubsor-ads}@anchor{333}@anchor{gnat_rm/the_gnat_library id49}@anchor{334}
@section @code{GNAT.Bubble_Sort} (@code{g-bubsor.ads})
@@ -23918,7 +23982,7 @@ data items. Exchange and comparison procedures are provided by passing
access-to-procedure values.
@node GNAT Bubble_Sort_A g-busora ads,GNAT Bubble_Sort_G g-busorg ads,GNAT Bubble_Sort g-bubsor ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id50}@anchor{334}@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-a-g-busora-ads}@anchor{335}
+@anchor{gnat_rm/the_gnat_library id50}@anchor{335}@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-a-g-busora-ads}@anchor{336}
@section @code{GNAT.Bubble_Sort_A} (@code{g-busora.ads})
@@ -23934,7 +23998,7 @@ access-to-procedure values. This is an older version, retained for
compatibility. Usually @code{GNAT.Bubble_Sort} will be preferable.
@node GNAT Bubble_Sort_G g-busorg ads,GNAT Byte_Order_Mark g-byorma ads,GNAT Bubble_Sort_A g-busora ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-g-busorg-ads}@anchor{336}@anchor{gnat_rm/the_gnat_library id51}@anchor{337}
+@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-g-busorg-ads}@anchor{337}@anchor{gnat_rm/the_gnat_library id51}@anchor{338}
@section @code{GNAT.Bubble_Sort_G} (@code{g-busorg.ads})
@@ -23950,7 +24014,7 @@ if the procedures can be inlined, at the expense of duplicating code for
multiple instantiations.
@node GNAT Byte_Order_Mark g-byorma ads,GNAT Byte_Swapping g-bytswa ads,GNAT Bubble_Sort_G g-busorg ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-byte-order-mark-g-byorma-ads}@anchor{338}@anchor{gnat_rm/the_gnat_library id52}@anchor{339}
+@anchor{gnat_rm/the_gnat_library gnat-byte-order-mark-g-byorma-ads}@anchor{339}@anchor{gnat_rm/the_gnat_library id52}@anchor{33a}
@section @code{GNAT.Byte_Order_Mark} (@code{g-byorma.ads})
@@ -23966,7 +24030,7 @@ 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,GNAT Calendar g-calend ads,GNAT Byte_Order_Mark g-byorma ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-byte-swapping-g-bytswa-ads}@anchor{33a}@anchor{gnat_rm/the_gnat_library id53}@anchor{33b}
+@anchor{gnat_rm/the_gnat_library gnat-byte-swapping-g-bytswa-ads}@anchor{33b}@anchor{gnat_rm/the_gnat_library id53}@anchor{33c}
@section @code{GNAT.Byte_Swapping} (@code{g-bytswa.ads})
@@ -23980,7 +24044,7 @@ General routines for swapping the bytes in 2-, 4-, and 8-byte quantities.
Machine-specific implementations are available in some cases.
@node GNAT Calendar g-calend ads,GNAT Calendar Time_IO g-catiio ads,GNAT Byte_Swapping g-bytswa ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id54}@anchor{33c}@anchor{gnat_rm/the_gnat_library gnat-calendar-g-calend-ads}@anchor{33d}
+@anchor{gnat_rm/the_gnat_library id54}@anchor{33d}@anchor{gnat_rm/the_gnat_library gnat-calendar-g-calend-ads}@anchor{33e}
@section @code{GNAT.Calendar} (@code{g-calend.ads})
@@ -23994,7 +24058,7 @@ Also provides conversion of @code{Ada.Calendar.Time} values to and from the
C @code{timeval} format.
@node GNAT Calendar Time_IO g-catiio ads,GNAT CRC32 g-crc32 ads,GNAT Calendar g-calend ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id55}@anchor{33e}@anchor{gnat_rm/the_gnat_library gnat-calendar-time-io-g-catiio-ads}@anchor{33f}
+@anchor{gnat_rm/the_gnat_library id55}@anchor{33f}@anchor{gnat_rm/the_gnat_library gnat-calendar-time-io-g-catiio-ads}@anchor{340}
@section @code{GNAT.Calendar.Time_IO} (@code{g-catiio.ads})
@@ -24005,7 +24069,7 @@ C @code{timeval} format.
@geindex GNAT.Calendar.Time_IO (g-catiio.ads)
@node GNAT CRC32 g-crc32 ads,GNAT Case_Util g-casuti ads,GNAT Calendar Time_IO g-catiio ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id56}@anchor{340}@anchor{gnat_rm/the_gnat_library gnat-crc32-g-crc32-ads}@anchor{341}
+@anchor{gnat_rm/the_gnat_library id56}@anchor{341}@anchor{gnat_rm/the_gnat_library gnat-crc32-g-crc32-ads}@anchor{342}
@section @code{GNAT.CRC32} (@code{g-crc32.ads})
@@ -24022,7 +24086,7 @@ of this algorithm see
Aug. 1988. Sarwate, D.V.
@node GNAT Case_Util g-casuti ads,GNAT CGI g-cgi ads,GNAT CRC32 g-crc32 ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id57}@anchor{342}@anchor{gnat_rm/the_gnat_library gnat-case-util-g-casuti-ads}@anchor{343}
+@anchor{gnat_rm/the_gnat_library id57}@anchor{343}@anchor{gnat_rm/the_gnat_library gnat-case-util-g-casuti-ads}@anchor{344}
@section @code{GNAT.Case_Util} (@code{g-casuti.ads})
@@ -24037,7 +24101,7 @@ without the overhead of the full casing tables
in @code{Ada.Characters.Handling}.
@node GNAT CGI g-cgi ads,GNAT CGI Cookie g-cgicoo ads,GNAT Case_Util g-casuti ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id58}@anchor{344}@anchor{gnat_rm/the_gnat_library gnat-cgi-g-cgi-ads}@anchor{345}
+@anchor{gnat_rm/the_gnat_library id58}@anchor{345}@anchor{gnat_rm/the_gnat_library gnat-cgi-g-cgi-ads}@anchor{346}
@section @code{GNAT.CGI} (@code{g-cgi.ads})
@@ -24052,7 +24116,7 @@ builds a table whose index is the key and provides some services to deal
with this table.
@node GNAT CGI Cookie g-cgicoo ads,GNAT CGI Debug g-cgideb ads,GNAT CGI g-cgi ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-cgi-cookie-g-cgicoo-ads}@anchor{346}@anchor{gnat_rm/the_gnat_library id59}@anchor{347}
+@anchor{gnat_rm/the_gnat_library gnat-cgi-cookie-g-cgicoo-ads}@anchor{347}@anchor{gnat_rm/the_gnat_library id59}@anchor{348}
@section @code{GNAT.CGI.Cookie} (@code{g-cgicoo.ads})
@@ -24067,7 +24131,7 @@ Common Gateway Interface (CGI). It exports services to deal with Web
cookies (piece of information kept in the Web client software).
@node GNAT CGI Debug g-cgideb ads,GNAT Command_Line g-comlin ads,GNAT CGI Cookie g-cgicoo ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-cgi-debug-g-cgideb-ads}@anchor{348}@anchor{gnat_rm/the_gnat_library id60}@anchor{349}
+@anchor{gnat_rm/the_gnat_library gnat-cgi-debug-g-cgideb-ads}@anchor{349}@anchor{gnat_rm/the_gnat_library id60}@anchor{34a}
@section @code{GNAT.CGI.Debug} (@code{g-cgideb.ads})
@@ -24079,7 +24143,7 @@ This is a package to help debugging CGI (Common Gateway Interface)
programs written in Ada.
@node GNAT Command_Line g-comlin ads,GNAT Compiler_Version g-comver ads,GNAT CGI Debug g-cgideb ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id61}@anchor{34a}@anchor{gnat_rm/the_gnat_library gnat-command-line-g-comlin-ads}@anchor{34b}
+@anchor{gnat_rm/the_gnat_library id61}@anchor{34b}@anchor{gnat_rm/the_gnat_library gnat-command-line-g-comlin-ads}@anchor{34c}
@section @code{GNAT.Command_Line} (@code{g-comlin.ads})
@@ -24092,7 +24156,7 @@ including the ability to scan for named switches with optional parameters
and expand file names using wildcard notations.
@node GNAT Compiler_Version g-comver ads,GNAT Ctrl_C g-ctrl_c ads,GNAT Command_Line g-comlin ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-compiler-version-g-comver-ads}@anchor{34c}@anchor{gnat_rm/the_gnat_library id62}@anchor{34d}
+@anchor{gnat_rm/the_gnat_library gnat-compiler-version-g-comver-ads}@anchor{34d}@anchor{gnat_rm/the_gnat_library id62}@anchor{34e}
@section @code{GNAT.Compiler_Version} (@code{g-comver.ads})
@@ -24110,7 +24174,7 @@ of the compiler if a consistent tool set is used to compile all units
of a partition).
@node GNAT Ctrl_C g-ctrl_c ads,GNAT Current_Exception g-curexc ads,GNAT Compiler_Version g-comver ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-ctrl-c-g-ctrl-c-ads}@anchor{34e}@anchor{gnat_rm/the_gnat_library id63}@anchor{34f}
+@anchor{gnat_rm/the_gnat_library gnat-ctrl-c-g-ctrl-c-ads}@anchor{34f}@anchor{gnat_rm/the_gnat_library id63}@anchor{350}
@section @code{GNAT.Ctrl_C} (@code{g-ctrl_c.ads})
@@ -24121,7 +24185,7 @@ of a partition).
Provides a simple interface to handle Ctrl-C keyboard events.
@node GNAT Current_Exception g-curexc ads,GNAT Debug_Pools g-debpoo ads,GNAT Ctrl_C g-ctrl_c ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id64}@anchor{350}@anchor{gnat_rm/the_gnat_library gnat-current-exception-g-curexc-ads}@anchor{351}
+@anchor{gnat_rm/the_gnat_library id64}@anchor{351}@anchor{gnat_rm/the_gnat_library gnat-current-exception-g-curexc-ads}@anchor{352}
@section @code{GNAT.Current_Exception} (@code{g-curexc.ads})
@@ -24138,7 +24202,7 @@ This is particularly useful in simulating typical facilities for
obtaining information about exceptions provided by Ada 83 compilers.
@node GNAT Debug_Pools g-debpoo ads,GNAT Debug_Utilities g-debuti ads,GNAT Current_Exception g-curexc ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-debug-pools-g-debpoo-ads}@anchor{352}@anchor{gnat_rm/the_gnat_library id65}@anchor{353}
+@anchor{gnat_rm/the_gnat_library gnat-debug-pools-g-debpoo-ads}@anchor{353}@anchor{gnat_rm/the_gnat_library id65}@anchor{354}
@section @code{GNAT.Debug_Pools} (@code{g-debpoo.ads})
@@ -24155,7 +24219,7 @@ problems.
See @code{The GNAT Debug_Pool Facility} section in the @cite{GNAT User's Guide}.
@node GNAT Debug_Utilities g-debuti ads,GNAT Decode_String g-decstr ads,GNAT Debug_Pools g-debpoo ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-debug-utilities-g-debuti-ads}@anchor{354}@anchor{gnat_rm/the_gnat_library id66}@anchor{355}
+@anchor{gnat_rm/the_gnat_library gnat-debug-utilities-g-debuti-ads}@anchor{355}@anchor{gnat_rm/the_gnat_library id66}@anchor{356}
@section @code{GNAT.Debug_Utilities} (@code{g-debuti.ads})
@@ -24168,7 +24232,7 @@ to and from string images of address values. Supports both C and Ada formats
for hexadecimal literals.
@node GNAT Decode_String g-decstr ads,GNAT Decode_UTF8_String g-deutst ads,GNAT Debug_Utilities g-debuti ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id67}@anchor{356}@anchor{gnat_rm/the_gnat_library gnat-decode-string-g-decstr-ads}@anchor{357}
+@anchor{gnat_rm/the_gnat_library id67}@anchor{357}@anchor{gnat_rm/the_gnat_library gnat-decode-string-g-decstr-ads}@anchor{358}
@section @code{GNAT.Decode_String} (@code{g-decstr.ads})
@@ -24192,7 +24256,7 @@ Useful in conjunction with Unicode character coding. Note there is a
preinstantiation for UTF-8. See next entry.
@node GNAT Decode_UTF8_String g-deutst ads,GNAT Directory_Operations g-dirope ads,GNAT Decode_String g-decstr ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-decode-utf8-string-g-deutst-ads}@anchor{358}@anchor{gnat_rm/the_gnat_library id68}@anchor{359}
+@anchor{gnat_rm/the_gnat_library gnat-decode-utf8-string-g-deutst-ads}@anchor{359}@anchor{gnat_rm/the_gnat_library id68}@anchor{35a}
@section @code{GNAT.Decode_UTF8_String} (@code{g-deutst.ads})
@@ -24213,7 +24277,7 @@ preinstantiation for UTF-8. See next entry.
A preinstantiation of GNAT.Decode_Strings for UTF-8 encoding.
@node GNAT Directory_Operations g-dirope ads,GNAT Directory_Operations Iteration g-diopit ads,GNAT Decode_UTF8_String g-deutst ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id69}@anchor{35a}@anchor{gnat_rm/the_gnat_library gnat-directory-operations-g-dirope-ads}@anchor{35b}
+@anchor{gnat_rm/the_gnat_library id69}@anchor{35b}@anchor{gnat_rm/the_gnat_library gnat-directory-operations-g-dirope-ads}@anchor{35c}
@section @code{GNAT.Directory_Operations} (@code{g-dirope.ads})
@@ -24226,7 +24290,7 @@ the current directory, making new directories, and scanning the files in a
directory.
@node GNAT Directory_Operations Iteration g-diopit ads,GNAT Dynamic_HTables g-dynhta ads,GNAT Directory_Operations g-dirope ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id70}@anchor{35c}@anchor{gnat_rm/the_gnat_library gnat-directory-operations-iteration-g-diopit-ads}@anchor{35d}
+@anchor{gnat_rm/the_gnat_library id70}@anchor{35d}@anchor{gnat_rm/the_gnat_library gnat-directory-operations-iteration-g-diopit-ads}@anchor{35e}
@section @code{GNAT.Directory_Operations.Iteration} (@code{g-diopit.ads})
@@ -24238,7 +24302,7 @@ A child unit of GNAT.Directory_Operations providing additional operations
for iterating through directories.
@node GNAT Dynamic_HTables g-dynhta ads,GNAT Dynamic_Tables g-dyntab ads,GNAT Directory_Operations Iteration g-diopit ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id71}@anchor{35e}@anchor{gnat_rm/the_gnat_library gnat-dynamic-htables-g-dynhta-ads}@anchor{35f}
+@anchor{gnat_rm/the_gnat_library id71}@anchor{35f}@anchor{gnat_rm/the_gnat_library gnat-dynamic-htables-g-dynhta-ads}@anchor{360}
@section @code{GNAT.Dynamic_HTables} (@code{g-dynhta.ads})
@@ -24256,7 +24320,7 @@ dynamic instances of the hash table, while an instantiation of
@code{GNAT.HTable} creates a single instance of the hash table.
@node GNAT Dynamic_Tables g-dyntab ads,GNAT Encode_String g-encstr ads,GNAT Dynamic_HTables g-dynhta ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-dynamic-tables-g-dyntab-ads}@anchor{360}@anchor{gnat_rm/the_gnat_library id72}@anchor{361}
+@anchor{gnat_rm/the_gnat_library gnat-dynamic-tables-g-dyntab-ads}@anchor{361}@anchor{gnat_rm/the_gnat_library id72}@anchor{362}
@section @code{GNAT.Dynamic_Tables} (@code{g-dyntab.ads})
@@ -24276,7 +24340,7 @@ 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,GNAT Encode_UTF8_String g-enutst ads,GNAT Dynamic_Tables g-dyntab ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id73}@anchor{362}@anchor{gnat_rm/the_gnat_library gnat-encode-string-g-encstr-ads}@anchor{363}
+@anchor{gnat_rm/the_gnat_library id73}@anchor{363}@anchor{gnat_rm/the_gnat_library gnat-encode-string-g-encstr-ads}@anchor{364}
@section @code{GNAT.Encode_String} (@code{g-encstr.ads})
@@ -24298,7 +24362,7 @@ encoding method. Useful in conjunction with Unicode character coding.
Note there is a preinstantiation for UTF-8. See next entry.
@node GNAT Encode_UTF8_String g-enutst ads,GNAT Exception_Actions g-excact ads,GNAT Encode_String g-encstr ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-encode-utf8-string-g-enutst-ads}@anchor{364}@anchor{gnat_rm/the_gnat_library id74}@anchor{365}
+@anchor{gnat_rm/the_gnat_library gnat-encode-utf8-string-g-enutst-ads}@anchor{365}@anchor{gnat_rm/the_gnat_library id74}@anchor{366}
@section @code{GNAT.Encode_UTF8_String} (@code{g-enutst.ads})
@@ -24319,7 +24383,7 @@ Note there is a preinstantiation for UTF-8. See next entry.
A preinstantiation of GNAT.Encode_Strings for UTF-8 encoding.
@node GNAT Exception_Actions g-excact ads,GNAT Exception_Traces g-exctra ads,GNAT Encode_UTF8_String g-enutst ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-exception-actions-g-excact-ads}@anchor{366}@anchor{gnat_rm/the_gnat_library id75}@anchor{367}
+@anchor{gnat_rm/the_gnat_library gnat-exception-actions-g-excact-ads}@anchor{367}@anchor{gnat_rm/the_gnat_library id75}@anchor{368}
@section @code{GNAT.Exception_Actions} (@code{g-excact.ads})
@@ -24332,7 +24396,7 @@ for specific exceptions, or when any exception is raised. This
can be used for instance to force a core dump to ease debugging.
@node GNAT Exception_Traces g-exctra ads,GNAT Exceptions g-except ads,GNAT Exception_Actions g-excact ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-exception-traces-g-exctra-ads}@anchor{368}@anchor{gnat_rm/the_gnat_library id76}@anchor{369}
+@anchor{gnat_rm/the_gnat_library gnat-exception-traces-g-exctra-ads}@anchor{369}@anchor{gnat_rm/the_gnat_library id76}@anchor{36a}
@section @code{GNAT.Exception_Traces} (@code{g-exctra.ads})
@@ -24346,7 +24410,7 @@ Provides an interface allowing to control automatic output upon exception
occurrences.
@node GNAT Exceptions g-except ads,GNAT Expect g-expect ads,GNAT Exception_Traces g-exctra ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id77}@anchor{36a}@anchor{gnat_rm/the_gnat_library gnat-exceptions-g-except-ads}@anchor{36b}
+@anchor{gnat_rm/the_gnat_library id77}@anchor{36b}@anchor{gnat_rm/the_gnat_library gnat-exceptions-g-except-ads}@anchor{36c}
@section @code{GNAT.Exceptions} (@code{g-except.ads})
@@ -24367,7 +24431,7 @@ predefined exceptions, and for example allow raising
@code{Constraint_Error} with a message from a pure subprogram.
@node GNAT Expect g-expect ads,GNAT Expect TTY g-exptty ads,GNAT Exceptions g-except ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id78}@anchor{36c}@anchor{gnat_rm/the_gnat_library gnat-expect-g-expect-ads}@anchor{36d}
+@anchor{gnat_rm/the_gnat_library id78}@anchor{36d}@anchor{gnat_rm/the_gnat_library gnat-expect-g-expect-ads}@anchor{36e}
@section @code{GNAT.Expect} (@code{g-expect.ads})
@@ -24383,7 +24447,7 @@ It is not implemented for cross ports, and in particular is not
implemented for VxWorks or LynxOS.
@node GNAT Expect TTY g-exptty ads,GNAT Float_Control g-flocon ads,GNAT Expect g-expect ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id79}@anchor{36e}@anchor{gnat_rm/the_gnat_library gnat-expect-tty-g-exptty-ads}@anchor{36f}
+@anchor{gnat_rm/the_gnat_library id79}@anchor{36f}@anchor{gnat_rm/the_gnat_library gnat-expect-tty-g-exptty-ads}@anchor{370}
@section @code{GNAT.Expect.TTY} (@code{g-exptty.ads})
@@ -24395,7 +24459,7 @@ ports. It is not implemented for cross ports, and
in particular is not implemented for VxWorks or LynxOS.
@node GNAT Float_Control g-flocon ads,GNAT Formatted_String g-forstr ads,GNAT Expect TTY g-exptty ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id80}@anchor{370}@anchor{gnat_rm/the_gnat_library gnat-float-control-g-flocon-ads}@anchor{371}
+@anchor{gnat_rm/the_gnat_library id80}@anchor{371}@anchor{gnat_rm/the_gnat_library gnat-float-control-g-flocon-ads}@anchor{372}
@section @code{GNAT.Float_Control} (@code{g-flocon.ads})
@@ -24409,7 +24473,7 @@ library calls may cause this mode to be modified, and the Reset procedure
in this package can be used to reestablish the required mode.
@node GNAT Formatted_String g-forstr ads,GNAT Heap_Sort g-heasor ads,GNAT Float_Control g-flocon ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id81}@anchor{372}@anchor{gnat_rm/the_gnat_library gnat-formatted-string-g-forstr-ads}@anchor{373}
+@anchor{gnat_rm/the_gnat_library id81}@anchor{373}@anchor{gnat_rm/the_gnat_library gnat-formatted-string-g-forstr-ads}@anchor{374}
@section @code{GNAT.Formatted_String} (@code{g-forstr.ads})
@@ -24424,7 +24488,7 @@ derived from Integer, Float or enumerations as values for the
formatted string.
@node GNAT Heap_Sort g-heasor ads,GNAT Heap_Sort_A g-hesora ads,GNAT Formatted_String g-forstr ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-heasor-ads}@anchor{374}@anchor{gnat_rm/the_gnat_library id82}@anchor{375}
+@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-heasor-ads}@anchor{375}@anchor{gnat_rm/the_gnat_library id82}@anchor{376}
@section @code{GNAT.Heap_Sort} (@code{g-heasor.ads})
@@ -24438,7 +24502,7 @@ access-to-procedure values. The algorithm used is a modified heap sort
that performs approximately N*log(N) comparisons in the worst case.
@node GNAT Heap_Sort_A g-hesora ads,GNAT Heap_Sort_G g-hesorg ads,GNAT Heap_Sort g-heasor ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id83}@anchor{376}@anchor{gnat_rm/the_gnat_library gnat-heap-sort-a-g-hesora-ads}@anchor{377}
+@anchor{gnat_rm/the_gnat_library id83}@anchor{377}@anchor{gnat_rm/the_gnat_library gnat-heap-sort-a-g-hesora-ads}@anchor{378}
@section @code{GNAT.Heap_Sort_A} (@code{g-hesora.ads})
@@ -24454,7 +24518,7 @@ This differs from @code{GNAT.Heap_Sort} in having a less convenient
interface, but may be slightly more efficient.
@node GNAT Heap_Sort_G g-hesorg ads,GNAT HTable g-htable ads,GNAT Heap_Sort_A g-hesora ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id84}@anchor{378}@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-g-hesorg-ads}@anchor{379}
+@anchor{gnat_rm/the_gnat_library id84}@anchor{379}@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-g-hesorg-ads}@anchor{37a}
@section @code{GNAT.Heap_Sort_G} (@code{g-hesorg.ads})
@@ -24468,7 +24532,7 @@ if the procedures can be inlined, at the expense of duplicating code for
multiple instantiations.
@node GNAT HTable g-htable ads,GNAT IO g-io ads,GNAT Heap_Sort_G g-hesorg ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id85}@anchor{37a}@anchor{gnat_rm/the_gnat_library gnat-htable-g-htable-ads}@anchor{37b}
+@anchor{gnat_rm/the_gnat_library id85}@anchor{37b}@anchor{gnat_rm/the_gnat_library gnat-htable-g-htable-ads}@anchor{37c}
@section @code{GNAT.HTable} (@code{g-htable.ads})
@@ -24481,7 +24545,7 @@ data. Provides two approaches, one a simple static approach, and the other
allowing arbitrary dynamic hash tables.
@node GNAT IO g-io ads,GNAT IO_Aux g-io_aux ads,GNAT HTable g-htable ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id86}@anchor{37c}@anchor{gnat_rm/the_gnat_library gnat-io-g-io-ads}@anchor{37d}
+@anchor{gnat_rm/the_gnat_library id86}@anchor{37d}@anchor{gnat_rm/the_gnat_library gnat-io-g-io-ads}@anchor{37e}
@section @code{GNAT.IO} (@code{g-io.ads})
@@ -24497,7 +24561,7 @@ Standard_Input, and writing characters, strings and integers to either
Standard_Output or Standard_Error.
@node GNAT IO_Aux g-io_aux ads,GNAT Lock_Files g-locfil ads,GNAT IO g-io ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id87}@anchor{37e}@anchor{gnat_rm/the_gnat_library gnat-io-aux-g-io-aux-ads}@anchor{37f}
+@anchor{gnat_rm/the_gnat_library id87}@anchor{37f}@anchor{gnat_rm/the_gnat_library gnat-io-aux-g-io-aux-ads}@anchor{380}
@section @code{GNAT.IO_Aux} (@code{g-io_aux.ads})
@@ -24511,7 +24575,7 @@ Provides some auxiliary functions for use with Text_IO, including a test
for whether a file exists, and functions for reading a line of text.
@node GNAT Lock_Files g-locfil ads,GNAT MBBS_Discrete_Random g-mbdira ads,GNAT IO_Aux g-io_aux ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id88}@anchor{380}@anchor{gnat_rm/the_gnat_library gnat-lock-files-g-locfil-ads}@anchor{381}
+@anchor{gnat_rm/the_gnat_library id88}@anchor{381}@anchor{gnat_rm/the_gnat_library gnat-lock-files-g-locfil-ads}@anchor{382}
@section @code{GNAT.Lock_Files} (@code{g-locfil.ads})
@@ -24525,7 +24589,7 @@ Provides a general interface for using files as locks. Can be used for
providing program level synchronization.
@node GNAT MBBS_Discrete_Random g-mbdira ads,GNAT MBBS_Float_Random g-mbflra ads,GNAT Lock_Files g-locfil ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id89}@anchor{382}@anchor{gnat_rm/the_gnat_library gnat-mbbs-discrete-random-g-mbdira-ads}@anchor{383}
+@anchor{gnat_rm/the_gnat_library id89}@anchor{383}@anchor{gnat_rm/the_gnat_library gnat-mbbs-discrete-random-g-mbdira-ads}@anchor{384}
@section @code{GNAT.MBBS_Discrete_Random} (@code{g-mbdira.ads})
@@ -24537,7 +24601,7 @@ The original implementation of @code{Ada.Numerics.Discrete_Random}. Uses
a modified version of the Blum-Blum-Shub generator.
@node GNAT MBBS_Float_Random g-mbflra ads,GNAT MD5 g-md5 ads,GNAT MBBS_Discrete_Random g-mbdira ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id90}@anchor{384}@anchor{gnat_rm/the_gnat_library gnat-mbbs-float-random-g-mbflra-ads}@anchor{385}
+@anchor{gnat_rm/the_gnat_library id90}@anchor{385}@anchor{gnat_rm/the_gnat_library gnat-mbbs-float-random-g-mbflra-ads}@anchor{386}
@section @code{GNAT.MBBS_Float_Random} (@code{g-mbflra.ads})
@@ -24549,7 +24613,7 @@ The original implementation of @code{Ada.Numerics.Float_Random}. Uses
a modified version of the Blum-Blum-Shub generator.
@node GNAT MD5 g-md5 ads,GNAT Memory_Dump g-memdum ads,GNAT MBBS_Float_Random g-mbflra ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id91}@anchor{386}@anchor{gnat_rm/the_gnat_library gnat-md5-g-md5-ads}@anchor{387}
+@anchor{gnat_rm/the_gnat_library id91}@anchor{387}@anchor{gnat_rm/the_gnat_library gnat-md5-g-md5-ads}@anchor{388}
@section @code{GNAT.MD5} (@code{g-md5.ads})
@@ -24562,7 +24626,7 @@ the HMAC-MD5 message authentication function as described in RFC 2104 and
FIPS PUB 198.
@node GNAT Memory_Dump g-memdum ads,GNAT Most_Recent_Exception g-moreex ads,GNAT MD5 g-md5 ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id92}@anchor{388}@anchor{gnat_rm/the_gnat_library gnat-memory-dump-g-memdum-ads}@anchor{389}
+@anchor{gnat_rm/the_gnat_library id92}@anchor{389}@anchor{gnat_rm/the_gnat_library gnat-memory-dump-g-memdum-ads}@anchor{38a}
@section @code{GNAT.Memory_Dump} (@code{g-memdum.ads})
@@ -24575,7 +24639,7 @@ standard output or standard error files. Uses GNAT.IO for actual
output.
@node GNAT Most_Recent_Exception g-moreex ads,GNAT OS_Lib g-os_lib ads,GNAT Memory_Dump g-memdum ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-most-recent-exception-g-moreex-ads}@anchor{38a}@anchor{gnat_rm/the_gnat_library id93}@anchor{38b}
+@anchor{gnat_rm/the_gnat_library gnat-most-recent-exception-g-moreex-ads}@anchor{38b}@anchor{gnat_rm/the_gnat_library id93}@anchor{38c}
@section @code{GNAT.Most_Recent_Exception} (@code{g-moreex.ads})
@@ -24589,7 +24653,7 @@ various logging purposes, including duplicating functionality of some
Ada 83 implementation dependent extensions.
@node GNAT OS_Lib g-os_lib ads,GNAT Perfect_Hash_Generators g-pehage ads,GNAT Most_Recent_Exception g-moreex ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-os-lib-g-os-lib-ads}@anchor{38c}@anchor{gnat_rm/the_gnat_library id94}@anchor{38d}
+@anchor{gnat_rm/the_gnat_library gnat-os-lib-g-os-lib-ads}@anchor{38d}@anchor{gnat_rm/the_gnat_library id94}@anchor{38e}
@section @code{GNAT.OS_Lib} (@code{g-os_lib.ads})
@@ -24605,7 +24669,7 @@ including a portable spawn procedure, and access to environment variables
and error return codes.
@node GNAT Perfect_Hash_Generators g-pehage ads,GNAT Random_Numbers g-rannum ads,GNAT OS_Lib g-os_lib ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-perfect-hash-generators-g-pehage-ads}@anchor{38e}@anchor{gnat_rm/the_gnat_library id95}@anchor{38f}
+@anchor{gnat_rm/the_gnat_library gnat-perfect-hash-generators-g-pehage-ads}@anchor{38f}@anchor{gnat_rm/the_gnat_library id95}@anchor{390}
@section @code{GNAT.Perfect_Hash_Generators} (@code{g-pehage.ads})
@@ -24623,7 +24687,7 @@ hashcode are in the same order. These hashing functions are very
convenient for use with realtime applications.
@node GNAT Random_Numbers g-rannum ads,GNAT Regexp g-regexp ads,GNAT Perfect_Hash_Generators g-pehage ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-random-numbers-g-rannum-ads}@anchor{390}@anchor{gnat_rm/the_gnat_library id96}@anchor{391}
+@anchor{gnat_rm/the_gnat_library gnat-random-numbers-g-rannum-ads}@anchor{391}@anchor{gnat_rm/the_gnat_library id96}@anchor{392}
@section @code{GNAT.Random_Numbers} (@code{g-rannum.ads})
@@ -24635,7 +24699,7 @@ 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,GNAT Registry g-regist ads,GNAT Random_Numbers g-rannum ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-regexp-g-regexp-ads}@anchor{259}@anchor{gnat_rm/the_gnat_library id97}@anchor{392}
+@anchor{gnat_rm/the_gnat_library gnat-regexp-g-regexp-ads}@anchor{25a}@anchor{gnat_rm/the_gnat_library id97}@anchor{393}
@section @code{GNAT.Regexp} (@code{g-regexp.ads})
@@ -24651,7 +24715,7 @@ simplest of the three pattern matching packages provided, and is particularly
suitable for 'file globbing' applications.
@node GNAT Registry g-regist ads,GNAT Regpat g-regpat ads,GNAT Regexp g-regexp ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id98}@anchor{393}@anchor{gnat_rm/the_gnat_library gnat-registry-g-regist-ads}@anchor{394}
+@anchor{gnat_rm/the_gnat_library id98}@anchor{394}@anchor{gnat_rm/the_gnat_library gnat-registry-g-regist-ads}@anchor{395}
@section @code{GNAT.Registry} (@code{g-regist.ads})
@@ -24665,7 +24729,7 @@ registry API, but at a lower level of abstraction, refer to the Win32.Winreg
package provided with the Win32Ada binding
@node GNAT Regpat g-regpat ads,GNAT Rewrite_Data g-rewdat ads,GNAT Registry g-regist ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id99}@anchor{395}@anchor{gnat_rm/the_gnat_library gnat-regpat-g-regpat-ads}@anchor{396}
+@anchor{gnat_rm/the_gnat_library id99}@anchor{396}@anchor{gnat_rm/the_gnat_library gnat-regpat-g-regpat-ads}@anchor{397}
@section @code{GNAT.Regpat} (@code{g-regpat.ads})
@@ -24680,7 +24744,7 @@ from the original V7 style regular expression library written in C by
Henry Spencer (and binary compatible with this C library).
@node GNAT Rewrite_Data g-rewdat ads,GNAT Secondary_Stack_Info g-sestin ads,GNAT Regpat g-regpat ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id100}@anchor{397}@anchor{gnat_rm/the_gnat_library gnat-rewrite-data-g-rewdat-ads}@anchor{398}
+@anchor{gnat_rm/the_gnat_library id100}@anchor{398}@anchor{gnat_rm/the_gnat_library gnat-rewrite-data-g-rewdat-ads}@anchor{399}
@section @code{GNAT.Rewrite_Data} (@code{g-rewdat.ads})
@@ -24694,7 +24758,7 @@ full content to be processed is not loaded into memory all at once. This makes
this interface usable for large files or socket streams.
@node GNAT Secondary_Stack_Info g-sestin ads,GNAT Semaphores g-semaph ads,GNAT Rewrite_Data g-rewdat ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id101}@anchor{399}@anchor{gnat_rm/the_gnat_library gnat-secondary-stack-info-g-sestin-ads}@anchor{39a}
+@anchor{gnat_rm/the_gnat_library id101}@anchor{39a}@anchor{gnat_rm/the_gnat_library gnat-secondary-stack-info-g-sestin-ads}@anchor{39b}
@section @code{GNAT.Secondary_Stack_Info} (@code{g-sestin.ads})
@@ -24706,7 +24770,7 @@ Provide the capability to query the high water mark of the current task's
secondary stack.
@node GNAT Semaphores g-semaph ads,GNAT Serial_Communications g-sercom ads,GNAT Secondary_Stack_Info g-sestin ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id102}@anchor{39b}@anchor{gnat_rm/the_gnat_library gnat-semaphores-g-semaph-ads}@anchor{39c}
+@anchor{gnat_rm/the_gnat_library id102}@anchor{39c}@anchor{gnat_rm/the_gnat_library gnat-semaphores-g-semaph-ads}@anchor{39d}
@section @code{GNAT.Semaphores} (@code{g-semaph.ads})
@@ -24717,7 +24781,7 @@ secondary stack.
Provides classic counting and binary semaphores using protected types.
@node GNAT Serial_Communications g-sercom ads,GNAT SHA1 g-sha1 ads,GNAT Semaphores g-semaph ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-serial-communications-g-sercom-ads}@anchor{39d}@anchor{gnat_rm/the_gnat_library id103}@anchor{39e}
+@anchor{gnat_rm/the_gnat_library gnat-serial-communications-g-sercom-ads}@anchor{39e}@anchor{gnat_rm/the_gnat_library id103}@anchor{39f}
@section @code{GNAT.Serial_Communications} (@code{g-sercom.ads})
@@ -24729,7 +24793,7 @@ Provides a simple interface to send and receive data over a serial
port. This is only supported on GNU/Linux and Windows.
@node GNAT SHA1 g-sha1 ads,GNAT SHA224 g-sha224 ads,GNAT Serial_Communications g-sercom ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-sha1-g-sha1-ads}@anchor{39f}@anchor{gnat_rm/the_gnat_library id104}@anchor{3a0}
+@anchor{gnat_rm/the_gnat_library gnat-sha1-g-sha1-ads}@anchor{3a0}@anchor{gnat_rm/the_gnat_library id104}@anchor{3a1}
@section @code{GNAT.SHA1} (@code{g-sha1.ads})
@@ -24742,7 +24806,7 @@ and RFC 3174, and the HMAC-SHA1 message authentication function as described
in RFC 2104 and FIPS PUB 198.
@node GNAT SHA224 g-sha224 ads,GNAT SHA256 g-sha256 ads,GNAT SHA1 g-sha1 ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-sha224-g-sha224-ads}@anchor{3a1}@anchor{gnat_rm/the_gnat_library id105}@anchor{3a2}
+@anchor{gnat_rm/the_gnat_library gnat-sha224-g-sha224-ads}@anchor{3a2}@anchor{gnat_rm/the_gnat_library id105}@anchor{3a3}
@section @code{GNAT.SHA224} (@code{g-sha224.ads})
@@ -24755,7 +24819,7 @@ and the HMAC-SHA224 message authentication function as described
in RFC 2104 and FIPS PUB 198.
@node GNAT SHA256 g-sha256 ads,GNAT SHA384 g-sha384 ads,GNAT SHA224 g-sha224 ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-sha256-g-sha256-ads}@anchor{3a3}@anchor{gnat_rm/the_gnat_library id106}@anchor{3a4}
+@anchor{gnat_rm/the_gnat_library gnat-sha256-g-sha256-ads}@anchor{3a4}@anchor{gnat_rm/the_gnat_library id106}@anchor{3a5}
@section @code{GNAT.SHA256} (@code{g-sha256.ads})
@@ -24768,7 +24832,7 @@ and the HMAC-SHA256 message authentication function as described
in RFC 2104 and FIPS PUB 198.
@node GNAT SHA384 g-sha384 ads,GNAT SHA512 g-sha512 ads,GNAT SHA256 g-sha256 ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-sha384-g-sha384-ads}@anchor{3a5}@anchor{gnat_rm/the_gnat_library id107}@anchor{3a6}
+@anchor{gnat_rm/the_gnat_library gnat-sha384-g-sha384-ads}@anchor{3a6}@anchor{gnat_rm/the_gnat_library id107}@anchor{3a7}
@section @code{GNAT.SHA384} (@code{g-sha384.ads})
@@ -24781,7 +24845,7 @@ and the HMAC-SHA384 message authentication function as described
in RFC 2104 and FIPS PUB 198.
@node GNAT SHA512 g-sha512 ads,GNAT Signals g-signal ads,GNAT SHA384 g-sha384 ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id108}@anchor{3a7}@anchor{gnat_rm/the_gnat_library gnat-sha512-g-sha512-ads}@anchor{3a8}
+@anchor{gnat_rm/the_gnat_library id108}@anchor{3a8}@anchor{gnat_rm/the_gnat_library gnat-sha512-g-sha512-ads}@anchor{3a9}
@section @code{GNAT.SHA512} (@code{g-sha512.ads})
@@ -24794,7 +24858,7 @@ and the HMAC-SHA512 message authentication function as described
in RFC 2104 and FIPS PUB 198.
@node GNAT Signals g-signal ads,GNAT Sockets g-socket ads,GNAT SHA512 g-sha512 ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id109}@anchor{3a9}@anchor{gnat_rm/the_gnat_library gnat-signals-g-signal-ads}@anchor{3aa}
+@anchor{gnat_rm/the_gnat_library id109}@anchor{3aa}@anchor{gnat_rm/the_gnat_library gnat-signals-g-signal-ads}@anchor{3ab}
@section @code{GNAT.Signals} (@code{g-signal.ads})
@@ -24806,7 +24870,7 @@ Provides the ability to manipulate the blocked status of signals on supported
targets.
@node GNAT Sockets g-socket ads,GNAT Source_Info g-souinf ads,GNAT Signals g-signal ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-sockets-g-socket-ads}@anchor{3ab}@anchor{gnat_rm/the_gnat_library id110}@anchor{3ac}
+@anchor{gnat_rm/the_gnat_library gnat-sockets-g-socket-ads}@anchor{3ac}@anchor{gnat_rm/the_gnat_library id110}@anchor{3ad}
@section @code{GNAT.Sockets} (@code{g-socket.ads})
@@ -24821,7 +24885,7 @@ on all native GNAT ports and on VxWorks cross prots. It is not implemented for
the LynxOS cross port.
@node GNAT Source_Info g-souinf ads,GNAT Spelling_Checker g-speche ads,GNAT Sockets g-socket ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-source-info-g-souinf-ads}@anchor{3ad}@anchor{gnat_rm/the_gnat_library id111}@anchor{3ae}
+@anchor{gnat_rm/the_gnat_library gnat-source-info-g-souinf-ads}@anchor{3ae}@anchor{gnat_rm/the_gnat_library id111}@anchor{3af}
@section @code{GNAT.Source_Info} (@code{g-souinf.ads})
@@ -24835,7 +24899,7 @@ subprograms yielding the date and time of the current compilation (like the
C macros @code{__DATE__} and @code{__TIME__})
@node GNAT Spelling_Checker g-speche ads,GNAT Spelling_Checker_Generic g-spchge ads,GNAT Source_Info g-souinf ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id112}@anchor{3af}@anchor{gnat_rm/the_gnat_library gnat-spelling-checker-g-speche-ads}@anchor{3b0}
+@anchor{gnat_rm/the_gnat_library id112}@anchor{3b0}@anchor{gnat_rm/the_gnat_library gnat-spelling-checker-g-speche-ads}@anchor{3b1}
@section @code{GNAT.Spelling_Checker} (@code{g-speche.ads})
@@ -24847,7 +24911,7 @@ Provides a function for determining whether one string is a plausible
near misspelling of another string.
@node GNAT Spelling_Checker_Generic g-spchge ads,GNAT Spitbol Patterns g-spipat ads,GNAT Spelling_Checker g-speche ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-spelling-checker-generic-g-spchge-ads}@anchor{3b1}@anchor{gnat_rm/the_gnat_library id113}@anchor{3b2}
+@anchor{gnat_rm/the_gnat_library gnat-spelling-checker-generic-g-spchge-ads}@anchor{3b2}@anchor{gnat_rm/the_gnat_library id113}@anchor{3b3}
@section @code{GNAT.Spelling_Checker_Generic} (@code{g-spchge.ads})
@@ -24860,7 +24924,7 @@ determining whether one string is a plausible near misspelling of another
string.
@node GNAT Spitbol Patterns g-spipat ads,GNAT Spitbol g-spitbo ads,GNAT Spelling_Checker_Generic g-spchge ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-spitbol-patterns-g-spipat-ads}@anchor{3b3}@anchor{gnat_rm/the_gnat_library id114}@anchor{3b4}
+@anchor{gnat_rm/the_gnat_library gnat-spitbol-patterns-g-spipat-ads}@anchor{3b4}@anchor{gnat_rm/the_gnat_library id114}@anchor{3b5}
@section @code{GNAT.Spitbol.Patterns} (@code{g-spipat.ads})
@@ -24876,7 +24940,7 @@ the SNOBOL4 dynamic pattern construction and matching capabilities, using the
efficient algorithm developed by Robert Dewar for the SPITBOL system.
@node GNAT Spitbol g-spitbo ads,GNAT Spitbol Table_Boolean g-sptabo ads,GNAT Spitbol Patterns g-spipat ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-spitbol-g-spitbo-ads}@anchor{3b5}@anchor{gnat_rm/the_gnat_library id115}@anchor{3b6}
+@anchor{gnat_rm/the_gnat_library gnat-spitbol-g-spitbo-ads}@anchor{3b6}@anchor{gnat_rm/the_gnat_library id115}@anchor{3b7}
@section @code{GNAT.Spitbol} (@code{g-spitbo.ads})
@@ -24891,7 +24955,7 @@ useful for constructing arbitrary mappings from strings in the style of
the SNOBOL4 TABLE function.
@node GNAT Spitbol Table_Boolean g-sptabo ads,GNAT Spitbol Table_Integer g-sptain ads,GNAT Spitbol g-spitbo ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id116}@anchor{3b7}@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-boolean-g-sptabo-ads}@anchor{3b8}
+@anchor{gnat_rm/the_gnat_library id116}@anchor{3b8}@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-boolean-g-sptabo-ads}@anchor{3b9}
@section @code{GNAT.Spitbol.Table_Boolean} (@code{g-sptabo.ads})
@@ -24906,7 +24970,7 @@ for type @code{Standard.Boolean}, giving an implementation of sets of
string values.
@node GNAT Spitbol Table_Integer g-sptain ads,GNAT Spitbol Table_VString g-sptavs ads,GNAT Spitbol Table_Boolean g-sptabo ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-integer-g-sptain-ads}@anchor{3b9}@anchor{gnat_rm/the_gnat_library id117}@anchor{3ba}
+@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-integer-g-sptain-ads}@anchor{3ba}@anchor{gnat_rm/the_gnat_library id117}@anchor{3bb}
@section @code{GNAT.Spitbol.Table_Integer} (@code{g-sptain.ads})
@@ -24923,7 +24987,7 @@ for type @code{Standard.Integer}, giving an implementation of maps
from string to integer values.
@node GNAT Spitbol Table_VString g-sptavs ads,GNAT SSE g-sse ads,GNAT Spitbol Table_Integer g-sptain ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id118}@anchor{3bb}@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-vstring-g-sptavs-ads}@anchor{3bc}
+@anchor{gnat_rm/the_gnat_library id118}@anchor{3bc}@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-vstring-g-sptavs-ads}@anchor{3bd}
@section @code{GNAT.Spitbol.Table_VString} (@code{g-sptavs.ads})
@@ -24940,7 +25004,7 @@ a variable length string type, giving an implementation of general
maps from strings to strings.
@node GNAT SSE g-sse ads,GNAT SSE Vector_Types g-ssvety ads,GNAT Spitbol Table_VString g-sptavs ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id119}@anchor{3bd}@anchor{gnat_rm/the_gnat_library gnat-sse-g-sse-ads}@anchor{3be}
+@anchor{gnat_rm/the_gnat_library id119}@anchor{3be}@anchor{gnat_rm/the_gnat_library gnat-sse-g-sse-ads}@anchor{3bf}
@section @code{GNAT.SSE} (@code{g-sse.ads})
@@ -24952,7 +25016,7 @@ targets. It exposes vector component types together with a general
introduction to the binding contents and use.
@node GNAT SSE Vector_Types g-ssvety ads,GNAT String_Hash g-strhas ads,GNAT SSE g-sse ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-sse-vector-types-g-ssvety-ads}@anchor{3bf}@anchor{gnat_rm/the_gnat_library id120}@anchor{3c0}
+@anchor{gnat_rm/the_gnat_library gnat-sse-vector-types-g-ssvety-ads}@anchor{3c0}@anchor{gnat_rm/the_gnat_library id120}@anchor{3c1}
@section @code{GNAT.SSE.Vector_Types} (@code{g-ssvety.ads})
@@ -24961,7 +25025,7 @@ introduction to the binding contents and use.
SSE vector types for use with SSE related intrinsics.
@node GNAT String_Hash g-strhas ads,GNAT Strings g-string ads,GNAT SSE Vector_Types g-ssvety ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-string-hash-g-strhas-ads}@anchor{3c1}@anchor{gnat_rm/the_gnat_library id121}@anchor{3c2}
+@anchor{gnat_rm/the_gnat_library gnat-string-hash-g-strhas-ads}@anchor{3c2}@anchor{gnat_rm/the_gnat_library id121}@anchor{3c3}
@section @code{GNAT.String_Hash} (@code{g-strhas.ads})
@@ -24973,7 +25037,7 @@ Provides a generic hash function working on arrays of scalars. Both the scalar
type and the hash result type are parameters.
@node GNAT Strings g-string ads,GNAT String_Split g-strspl ads,GNAT String_Hash g-strhas ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-strings-g-string-ads}@anchor{3c3}@anchor{gnat_rm/the_gnat_library id122}@anchor{3c4}
+@anchor{gnat_rm/the_gnat_library gnat-strings-g-string-ads}@anchor{3c4}@anchor{gnat_rm/the_gnat_library id122}@anchor{3c5}
@section @code{GNAT.Strings} (@code{g-string.ads})
@@ -24983,7 +25047,7 @@ Common String access types and related subprograms. Basically it
defines a string access and an array of string access types.
@node GNAT String_Split g-strspl ads,GNAT Table g-table ads,GNAT Strings g-string ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-string-split-g-strspl-ads}@anchor{3c5}@anchor{gnat_rm/the_gnat_library id123}@anchor{3c6}
+@anchor{gnat_rm/the_gnat_library gnat-string-split-g-strspl-ads}@anchor{3c6}@anchor{gnat_rm/the_gnat_library id123}@anchor{3c7}
@section @code{GNAT.String_Split} (@code{g-strspl.ads})
@@ -24997,7 +25061,7 @@ to the resulting slices. This package is instantiated from
@code{GNAT.Array_Split}.
@node GNAT Table g-table ads,GNAT Task_Lock g-tasloc ads,GNAT String_Split g-strspl ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id124}@anchor{3c7}@anchor{gnat_rm/the_gnat_library gnat-table-g-table-ads}@anchor{3c8}
+@anchor{gnat_rm/the_gnat_library id124}@anchor{3c8}@anchor{gnat_rm/the_gnat_library gnat-table-g-table-ads}@anchor{3c9}
@section @code{GNAT.Table} (@code{g-table.ads})
@@ -25017,7 +25081,7 @@ while an instantiation of @code{GNAT.Dynamic_Tables} creates a type that can be
used to define dynamic instances of the table.
@node GNAT Task_Lock g-tasloc ads,GNAT Time_Stamp g-timsta ads,GNAT Table g-table ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id125}@anchor{3c9}@anchor{gnat_rm/the_gnat_library gnat-task-lock-g-tasloc-ads}@anchor{3ca}
+@anchor{gnat_rm/the_gnat_library id125}@anchor{3ca}@anchor{gnat_rm/the_gnat_library gnat-task-lock-g-tasloc-ads}@anchor{3cb}
@section @code{GNAT.Task_Lock} (@code{g-tasloc.ads})
@@ -25034,7 +25098,7 @@ single global task lock. Appropriate for use in situations where contention
between tasks is very rarely expected.
@node GNAT Time_Stamp g-timsta ads,GNAT Threads g-thread ads,GNAT Task_Lock g-tasloc ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id126}@anchor{3cb}@anchor{gnat_rm/the_gnat_library gnat-time-stamp-g-timsta-ads}@anchor{3cc}
+@anchor{gnat_rm/the_gnat_library id126}@anchor{3cc}@anchor{gnat_rm/the_gnat_library gnat-time-stamp-g-timsta-ads}@anchor{3cd}
@section @code{GNAT.Time_Stamp} (@code{g-timsta.ads})
@@ -25049,7 +25113,7 @@ represents the current date and time in ISO 8601 format. This is a very simple
routine with minimal code and there are no dependencies on any other unit.
@node GNAT Threads g-thread ads,GNAT Traceback g-traceb ads,GNAT Time_Stamp g-timsta ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id127}@anchor{3cd}@anchor{gnat_rm/the_gnat_library gnat-threads-g-thread-ads}@anchor{3ce}
+@anchor{gnat_rm/the_gnat_library id127}@anchor{3ce}@anchor{gnat_rm/the_gnat_library gnat-threads-g-thread-ads}@anchor{3cf}
@section @code{GNAT.Threads} (@code{g-thread.ads})
@@ -25066,7 +25130,7 @@ further details if your program has threads that are created by a non-Ada
environment which then accesses Ada code.
@node GNAT Traceback g-traceb ads,GNAT Traceback Symbolic g-trasym ads,GNAT Threads g-thread ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id128}@anchor{3cf}@anchor{gnat_rm/the_gnat_library gnat-traceback-g-traceb-ads}@anchor{3d0}
+@anchor{gnat_rm/the_gnat_library id128}@anchor{3d0}@anchor{gnat_rm/the_gnat_library gnat-traceback-g-traceb-ads}@anchor{3d1}
@section @code{GNAT.Traceback} (@code{g-traceb.ads})
@@ -25078,7 +25142,7 @@ Provides a facility for obtaining non-symbolic traceback information, useful
in various debugging situations.
@node GNAT Traceback Symbolic g-trasym ads,GNAT UTF_32 g-table ads,GNAT Traceback g-traceb ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-traceback-symbolic-g-trasym-ads}@anchor{3d1}@anchor{gnat_rm/the_gnat_library id129}@anchor{3d2}
+@anchor{gnat_rm/the_gnat_library gnat-traceback-symbolic-g-trasym-ads}@anchor{3d2}@anchor{gnat_rm/the_gnat_library id129}@anchor{3d3}
@section @code{GNAT.Traceback.Symbolic} (@code{g-trasym.ads})
@@ -25087,7 +25151,7 @@ in various debugging situations.
@geindex Trace back facilities
@node GNAT UTF_32 g-table ads,GNAT Wide_Spelling_Checker g-u3spch ads,GNAT Traceback Symbolic g-trasym ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id130}@anchor{3d3}@anchor{gnat_rm/the_gnat_library gnat-utf-32-g-table-ads}@anchor{3d4}
+@anchor{gnat_rm/the_gnat_library id130}@anchor{3d4}@anchor{gnat_rm/the_gnat_library gnat-utf-32-g-table-ads}@anchor{3d5}
@section @code{GNAT.UTF_32} (@code{g-table.ads})
@@ -25106,7 +25170,7 @@ lower case to upper case fold routine corresponding to
the Ada 2005 rules for identifier equivalence.
@node GNAT Wide_Spelling_Checker g-u3spch ads,GNAT Wide_Spelling_Checker g-wispch ads,GNAT UTF_32 g-table ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-u3spch-ads}@anchor{3d5}@anchor{gnat_rm/the_gnat_library id131}@anchor{3d6}
+@anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-u3spch-ads}@anchor{3d6}@anchor{gnat_rm/the_gnat_library id131}@anchor{3d7}
@section @code{GNAT.Wide_Spelling_Checker} (@code{g-u3spch.ads})
@@ -25119,7 +25183,7 @@ 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,GNAT Wide_String_Split g-wistsp ads,GNAT Wide_Spelling_Checker g-u3spch ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-wispch-ads}@anchor{3d7}@anchor{gnat_rm/the_gnat_library id132}@anchor{3d8}
+@anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-wispch-ads}@anchor{3d8}@anchor{gnat_rm/the_gnat_library id132}@anchor{3d9}
@section @code{GNAT.Wide_Spelling_Checker} (@code{g-wispch.ads})
@@ -25131,7 +25195,7 @@ 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,GNAT Wide_Wide_Spelling_Checker g-zspche ads,GNAT Wide_Spelling_Checker g-wispch ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id133}@anchor{3d9}@anchor{gnat_rm/the_gnat_library gnat-wide-string-split-g-wistsp-ads}@anchor{3da}
+@anchor{gnat_rm/the_gnat_library id133}@anchor{3da}@anchor{gnat_rm/the_gnat_library gnat-wide-string-split-g-wistsp-ads}@anchor{3db}
@section @code{GNAT.Wide_String_Split} (@code{g-wistsp.ads})
@@ -25145,7 +25209,7 @@ to the resulting slices. This package is instantiated from
@code{GNAT.Array_Split}.
@node GNAT Wide_Wide_Spelling_Checker g-zspche ads,GNAT Wide_Wide_String_Split g-zistsp ads,GNAT Wide_String_Split g-wistsp ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-wide-wide-spelling-checker-g-zspche-ads}@anchor{3db}@anchor{gnat_rm/the_gnat_library id134}@anchor{3dc}
+@anchor{gnat_rm/the_gnat_library gnat-wide-wide-spelling-checker-g-zspche-ads}@anchor{3dc}@anchor{gnat_rm/the_gnat_library id134}@anchor{3dd}
@section @code{GNAT.Wide_Wide_Spelling_Checker} (@code{g-zspche.ads})
@@ -25157,7 +25221,7 @@ 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,Interfaces C Extensions i-cexten ads,GNAT Wide_Wide_Spelling_Checker g-zspche ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library gnat-wide-wide-string-split-g-zistsp-ads}@anchor{3dd}@anchor{gnat_rm/the_gnat_library id135}@anchor{3de}
+@anchor{gnat_rm/the_gnat_library gnat-wide-wide-string-split-g-zistsp-ads}@anchor{3de}@anchor{gnat_rm/the_gnat_library id135}@anchor{3df}
@section @code{GNAT.Wide_Wide_String_Split} (@code{g-zistsp.ads})
@@ -25171,7 +25235,7 @@ to the resulting slices. This package is instantiated from
@code{GNAT.Array_Split}.
@node Interfaces C Extensions i-cexten ads,Interfaces C Streams i-cstrea ads,GNAT Wide_Wide_String_Split g-zistsp ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library interfaces-c-extensions-i-cexten-ads}@anchor{3df}@anchor{gnat_rm/the_gnat_library id136}@anchor{3e0}
+@anchor{gnat_rm/the_gnat_library interfaces-c-extensions-i-cexten-ads}@anchor{3e0}@anchor{gnat_rm/the_gnat_library id136}@anchor{3e1}
@section @code{Interfaces.C.Extensions} (@code{i-cexten.ads})
@@ -25182,7 +25246,7 @@ for use with either manually or automatically generated bindings
to C libraries.
@node Interfaces C Streams i-cstrea ads,Interfaces Packed_Decimal i-pacdec ads,Interfaces C Extensions i-cexten ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library interfaces-c-streams-i-cstrea-ads}@anchor{3e1}@anchor{gnat_rm/the_gnat_library id137}@anchor{3e2}
+@anchor{gnat_rm/the_gnat_library interfaces-c-streams-i-cstrea-ads}@anchor{3e2}@anchor{gnat_rm/the_gnat_library id137}@anchor{3e3}
@section @code{Interfaces.C.Streams} (@code{i-cstrea.ads})
@@ -25195,7 +25259,7 @@ This package is a binding for the most commonly used operations
on C streams.
@node Interfaces Packed_Decimal i-pacdec ads,Interfaces VxWorks i-vxwork ads,Interfaces C Streams i-cstrea ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id138}@anchor{3e3}@anchor{gnat_rm/the_gnat_library interfaces-packed-decimal-i-pacdec-ads}@anchor{3e4}
+@anchor{gnat_rm/the_gnat_library id138}@anchor{3e4}@anchor{gnat_rm/the_gnat_library interfaces-packed-decimal-i-pacdec-ads}@anchor{3e5}
@section @code{Interfaces.Packed_Decimal} (@code{i-pacdec.ads})
@@ -25210,7 +25274,7 @@ from a packed decimal format compatible with that used on IBM
mainframes.
@node Interfaces VxWorks i-vxwork ads,Interfaces VxWorks Int_Connection i-vxinco ads,Interfaces Packed_Decimal i-pacdec ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id139}@anchor{3e5}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-i-vxwork-ads}@anchor{3e6}
+@anchor{gnat_rm/the_gnat_library id139}@anchor{3e6}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-i-vxwork-ads}@anchor{3e7}
@section @code{Interfaces.VxWorks} (@code{i-vxwork.ads})
@@ -25226,7 +25290,7 @@ In particular, it interfaces with the
VxWorks hardware interrupt facilities.
@node Interfaces VxWorks Int_Connection i-vxinco ads,Interfaces VxWorks IO i-vxwoio ads,Interfaces VxWorks i-vxwork ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library interfaces-vxworks-int-connection-i-vxinco-ads}@anchor{3e7}@anchor{gnat_rm/the_gnat_library id140}@anchor{3e8}
+@anchor{gnat_rm/the_gnat_library interfaces-vxworks-int-connection-i-vxinco-ads}@anchor{3e8}@anchor{gnat_rm/the_gnat_library id140}@anchor{3e9}
@section @code{Interfaces.VxWorks.Int_Connection} (@code{i-vxinco.ads})
@@ -25242,7 +25306,7 @@ intConnect() with a custom routine for installing interrupt
handlers.
@node Interfaces VxWorks IO i-vxwoio ads,System Address_Image s-addima ads,Interfaces VxWorks Int_Connection i-vxinco ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library interfaces-vxworks-io-i-vxwoio-ads}@anchor{3e9}@anchor{gnat_rm/the_gnat_library id141}@anchor{3ea}
+@anchor{gnat_rm/the_gnat_library interfaces-vxworks-io-i-vxwoio-ads}@anchor{3ea}@anchor{gnat_rm/the_gnat_library id141}@anchor{3eb}
@section @code{Interfaces.VxWorks.IO} (@code{i-vxwoio.ads})
@@ -25265,7 +25329,7 @@ function codes. A particular use of this package is
to enable the use of Get_Immediate under VxWorks.
@node System Address_Image s-addima ads,System Assertions s-assert ads,Interfaces VxWorks IO i-vxwoio ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library system-address-image-s-addima-ads}@anchor{3eb}@anchor{gnat_rm/the_gnat_library id142}@anchor{3ec}
+@anchor{gnat_rm/the_gnat_library system-address-image-s-addima-ads}@anchor{3ec}@anchor{gnat_rm/the_gnat_library id142}@anchor{3ed}
@section @code{System.Address_Image} (@code{s-addima.ads})
@@ -25281,7 +25345,7 @@ function that gives an (implementation dependent)
string which identifies an address.
@node System Assertions s-assert ads,System Atomic_Counters s-atocou ads,System Address_Image s-addima ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library system-assertions-s-assert-ads}@anchor{3ed}@anchor{gnat_rm/the_gnat_library id143}@anchor{3ee}
+@anchor{gnat_rm/the_gnat_library system-assertions-s-assert-ads}@anchor{3ee}@anchor{gnat_rm/the_gnat_library id143}@anchor{3ef}
@section @code{System.Assertions} (@code{s-assert.ads})
@@ -25297,7 +25361,7 @@ by an run-time assertion failure, as well as the routine that
is used internally to raise this assertion.
@node System Atomic_Counters s-atocou ads,System Memory s-memory ads,System Assertions s-assert ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id144}@anchor{3ef}@anchor{gnat_rm/the_gnat_library system-atomic-counters-s-atocou-ads}@anchor{3f0}
+@anchor{gnat_rm/the_gnat_library id144}@anchor{3f0}@anchor{gnat_rm/the_gnat_library system-atomic-counters-s-atocou-ads}@anchor{3f1}
@section @code{System.Atomic_Counters} (@code{s-atocou.ads})
@@ -25311,7 +25375,7 @@ on most targets, including all Alpha, ia64, PowerPC, SPARC V9,
x86, and x86_64 platforms.
@node System Memory s-memory ads,System Multiprocessors s-multip ads,System Atomic_Counters s-atocou ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library system-memory-s-memory-ads}@anchor{3f1}@anchor{gnat_rm/the_gnat_library id145}@anchor{3f2}
+@anchor{gnat_rm/the_gnat_library system-memory-s-memory-ads}@anchor{3f2}@anchor{gnat_rm/the_gnat_library id145}@anchor{3f3}
@section @code{System.Memory} (@code{s-memory.ads})
@@ -25329,7 +25393,7 @@ calls to this unit may be made for low level allocation uses (for
example see the body of @code{GNAT.Tables}).
@node System Multiprocessors s-multip ads,System Multiprocessors Dispatching_Domains s-mudido ads,System Memory s-memory ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id146}@anchor{3f3}@anchor{gnat_rm/the_gnat_library system-multiprocessors-s-multip-ads}@anchor{3f4}
+@anchor{gnat_rm/the_gnat_library id146}@anchor{3f4}@anchor{gnat_rm/the_gnat_library system-multiprocessors-s-multip-ads}@anchor{3f5}
@section @code{System.Multiprocessors} (@code{s-multip.ads})
@@ -25342,7 +25406,7 @@ in GNAT we also make it available in Ada 95 and Ada 2005 (where it is
technically an implementation-defined addition).
@node System Multiprocessors Dispatching_Domains s-mudido ads,System Partition_Interface s-parint ads,System Multiprocessors s-multip ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library system-multiprocessors-dispatching-domains-s-mudido-ads}@anchor{3f5}@anchor{gnat_rm/the_gnat_library id147}@anchor{3f6}
+@anchor{gnat_rm/the_gnat_library system-multiprocessors-dispatching-domains-s-mudido-ads}@anchor{3f6}@anchor{gnat_rm/the_gnat_library id147}@anchor{3f7}
@section @code{System.Multiprocessors.Dispatching_Domains} (@code{s-mudido.ads})
@@ -25355,7 +25419,7 @@ in GNAT we also make it available in Ada 95 and Ada 2005 (where it is
technically an implementation-defined addition).
@node System Partition_Interface s-parint ads,System Pool_Global s-pooglo ads,System Multiprocessors Dispatching_Domains s-mudido ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id148}@anchor{3f7}@anchor{gnat_rm/the_gnat_library system-partition-interface-s-parint-ads}@anchor{3f8}
+@anchor{gnat_rm/the_gnat_library id148}@anchor{3f8}@anchor{gnat_rm/the_gnat_library system-partition-interface-s-parint-ads}@anchor{3f9}
@section @code{System.Partition_Interface} (@code{s-parint.ads})
@@ -25368,7 +25432,7 @@ is used primarily in a distribution context when using Annex E
with @code{GLADE}.
@node System Pool_Global s-pooglo ads,System Pool_Local s-pooloc ads,System Partition_Interface s-parint ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id149}@anchor{3f9}@anchor{gnat_rm/the_gnat_library system-pool-global-s-pooglo-ads}@anchor{3fa}
+@anchor{gnat_rm/the_gnat_library id149}@anchor{3fa}@anchor{gnat_rm/the_gnat_library system-pool-global-s-pooglo-ads}@anchor{3fb}
@section @code{System.Pool_Global} (@code{s-pooglo.ads})
@@ -25385,7 +25449,7 @@ declared. It uses malloc/free to allocate/free and does not attempt to
do any automatic reclamation.
@node System Pool_Local s-pooloc ads,System Restrictions s-restri ads,System Pool_Global s-pooglo ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library system-pool-local-s-pooloc-ads}@anchor{3fb}@anchor{gnat_rm/the_gnat_library id150}@anchor{3fc}
+@anchor{gnat_rm/the_gnat_library system-pool-local-s-pooloc-ads}@anchor{3fc}@anchor{gnat_rm/the_gnat_library id150}@anchor{3fd}
@section @code{System.Pool_Local} (@code{s-pooloc.ads})
@@ -25402,7 +25466,7 @@ a list of allocated blocks, so that all storage allocated for the pool can
be freed automatically when the pool is finalized.
@node System Restrictions s-restri ads,System Rident s-rident ads,System Pool_Local s-pooloc ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library system-restrictions-s-restri-ads}@anchor{3fd}@anchor{gnat_rm/the_gnat_library id151}@anchor{3fe}
+@anchor{gnat_rm/the_gnat_library system-restrictions-s-restri-ads}@anchor{3fe}@anchor{gnat_rm/the_gnat_library id151}@anchor{3ff}
@section @code{System.Restrictions} (@code{s-restri.ads})
@@ -25418,7 +25482,7 @@ compiler determined information on which restrictions
are violated by one or more packages in the partition.
@node System Rident s-rident ads,System Strings Stream_Ops s-ststop ads,System Restrictions s-restri ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library system-rident-s-rident-ads}@anchor{3ff}@anchor{gnat_rm/the_gnat_library id152}@anchor{400}
+@anchor{gnat_rm/the_gnat_library system-rident-s-rident-ads}@anchor{400}@anchor{gnat_rm/the_gnat_library id152}@anchor{401}
@section @code{System.Rident} (@code{s-rident.ads})
@@ -25434,7 +25498,7 @@ since the necessary instantiation is included in
package System.Restrictions.
@node System Strings Stream_Ops s-ststop ads,System Unsigned_Types s-unstyp ads,System Rident s-rident ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id153}@anchor{401}@anchor{gnat_rm/the_gnat_library system-strings-stream-ops-s-ststop-ads}@anchor{402}
+@anchor{gnat_rm/the_gnat_library id153}@anchor{402}@anchor{gnat_rm/the_gnat_library system-strings-stream-ops-s-ststop-ads}@anchor{403}
@section @code{System.Strings.Stream_Ops} (@code{s-ststop.ads})
@@ -25450,7 +25514,7 @@ stream attributes are applied to string types, but the subprograms in this
package can be used directly by application programs.
@node System Unsigned_Types s-unstyp ads,System Wch_Cnv s-wchcnv ads,System Strings Stream_Ops s-ststop ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library system-unsigned-types-s-unstyp-ads}@anchor{403}@anchor{gnat_rm/the_gnat_library id154}@anchor{404}
+@anchor{gnat_rm/the_gnat_library system-unsigned-types-s-unstyp-ads}@anchor{404}@anchor{gnat_rm/the_gnat_library id154}@anchor{405}
@section @code{System.Unsigned_Types} (@code{s-unstyp.ads})
@@ -25463,7 +25527,7 @@ also contains some related definitions for other specialized types
used by the compiler in connection with packed array types.
@node System Wch_Cnv s-wchcnv ads,System Wch_Con s-wchcon ads,System Unsigned_Types s-unstyp ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library system-wch-cnv-s-wchcnv-ads}@anchor{405}@anchor{gnat_rm/the_gnat_library id155}@anchor{406}
+@anchor{gnat_rm/the_gnat_library system-wch-cnv-s-wchcnv-ads}@anchor{406}@anchor{gnat_rm/the_gnat_library id155}@anchor{407}
@section @code{System.Wch_Cnv} (@code{s-wchcnv.ads})
@@ -25484,7 +25548,7 @@ encoding method. It uses definitions in
package @code{System.Wch_Con}.
@node System Wch_Con s-wchcon ads,,System Wch_Cnv s-wchcnv ads,The GNAT Library
-@anchor{gnat_rm/the_gnat_library id156}@anchor{407}@anchor{gnat_rm/the_gnat_library system-wch-con-s-wchcon-ads}@anchor{408}
+@anchor{gnat_rm/the_gnat_library id156}@anchor{408}@anchor{gnat_rm/the_gnat_library system-wch-con-s-wchcon-ads}@anchor{409}
@section @code{System.Wch_Con} (@code{s-wchcon.ads})
@@ -25496,7 +25560,7 @@ in ordinary strings. These definitions are used by
the package @code{System.Wch_Cnv}.
@node Interfacing to Other Languages,Specialized Needs Annexes,The GNAT Library,Top
-@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-other-languages}@anchor{11}@anchor{gnat_rm/interfacing_to_other_languages doc}@anchor{409}@anchor{gnat_rm/interfacing_to_other_languages id1}@anchor{40a}
+@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-other-languages}@anchor{11}@anchor{gnat_rm/interfacing_to_other_languages doc}@anchor{40a}@anchor{gnat_rm/interfacing_to_other_languages id1}@anchor{40b}
@chapter Interfacing to Other Languages
@@ -25514,7 +25578,7 @@ provided.
@end menu
@node Interfacing to C,Interfacing to C++,,Interfacing to Other Languages
-@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-c}@anchor{40b}@anchor{gnat_rm/interfacing_to_other_languages id2}@anchor{40c}
+@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-c}@anchor{40c}@anchor{gnat_rm/interfacing_to_other_languages id2}@anchor{40d}
@section Interfacing to C
@@ -25654,7 +25718,7 @@ of the length corresponding to the @code{type'Size} value in Ada.
@end itemize
@node Interfacing to C++,Interfacing to COBOL,Interfacing to C,Interfacing to Other Languages
-@anchor{gnat_rm/interfacing_to_other_languages id4}@anchor{40d}@anchor{gnat_rm/interfacing_to_other_languages id3}@anchor{49}
+@anchor{gnat_rm/interfacing_to_other_languages id4}@anchor{40e}@anchor{gnat_rm/interfacing_to_other_languages id3}@anchor{4a}
@section Interfacing to C++
@@ -25711,7 +25775,7 @@ The @code{External_Name} is the name of the C++ RTTI symbol. You can then
cover a specific C++ exception in an exception handler.
@node Interfacing to COBOL,Interfacing to Fortran,Interfacing to C++,Interfacing to Other Languages
-@anchor{gnat_rm/interfacing_to_other_languages id5}@anchor{40e}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-cobol}@anchor{40f}
+@anchor{gnat_rm/interfacing_to_other_languages id5}@anchor{40f}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-cobol}@anchor{410}
@section Interfacing to COBOL
@@ -25719,7 +25783,7 @@ Interfacing to COBOL is achieved as described in section B.4 of
the Ada Reference Manual.
@node Interfacing to Fortran,Interfacing to non-GNAT Ada code,Interfacing to COBOL,Interfacing to Other Languages
-@anchor{gnat_rm/interfacing_to_other_languages id6}@anchor{410}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-fortran}@anchor{411}
+@anchor{gnat_rm/interfacing_to_other_languages id6}@anchor{411}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-fortran}@anchor{412}
@section Interfacing to Fortran
@@ -25729,7 +25793,7 @@ multi-dimensional array causes the array to be stored in column-major
order as required for convenient interface to Fortran.
@node Interfacing to non-GNAT Ada code,,Interfacing to Fortran,Interfacing to Other Languages
-@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-non-gnat-ada-code}@anchor{412}@anchor{gnat_rm/interfacing_to_other_languages id7}@anchor{413}
+@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-non-gnat-ada-code}@anchor{413}@anchor{gnat_rm/interfacing_to_other_languages id7}@anchor{414}
@section Interfacing to non-GNAT Ada code
@@ -25753,7 +25817,7 @@ values or simple record types without variants, or simple array
types with fixed bounds.
@node Specialized Needs Annexes,Implementation of Specific Ada Features,Interfacing to Other Languages,Top
-@anchor{gnat_rm/specialized_needs_annexes specialized-needs-annexes}@anchor{12}@anchor{gnat_rm/specialized_needs_annexes doc}@anchor{414}@anchor{gnat_rm/specialized_needs_annexes id1}@anchor{415}
+@anchor{gnat_rm/specialized_needs_annexes specialized-needs-annexes}@anchor{12}@anchor{gnat_rm/specialized_needs_annexes doc}@anchor{415}@anchor{gnat_rm/specialized_needs_annexes id1}@anchor{416}
@chapter Specialized Needs Annexes
@@ -25794,7 +25858,7 @@ in Ada 2005) is fully implemented.
@end table
@node Implementation of Specific Ada Features,Implementation of Ada 2012 Features,Specialized Needs Annexes,Top
-@anchor{gnat_rm/implementation_of_specific_ada_features implementation-of-specific-ada-features}@anchor{13}@anchor{gnat_rm/implementation_of_specific_ada_features doc}@anchor{416}@anchor{gnat_rm/implementation_of_specific_ada_features id1}@anchor{417}
+@anchor{gnat_rm/implementation_of_specific_ada_features implementation-of-specific-ada-features}@anchor{13}@anchor{gnat_rm/implementation_of_specific_ada_features doc}@anchor{417}@anchor{gnat_rm/implementation_of_specific_ada_features id1}@anchor{418}
@chapter Implementation of Specific Ada Features
@@ -25812,7 +25876,7 @@ facilities.
@end menu
@node Machine Code Insertions,GNAT Implementation of Tasking,,Implementation of Specific Ada Features
-@anchor{gnat_rm/implementation_of_specific_ada_features machine-code-insertions}@anchor{16c}@anchor{gnat_rm/implementation_of_specific_ada_features id2}@anchor{418}
+@anchor{gnat_rm/implementation_of_specific_ada_features machine-code-insertions}@anchor{16d}@anchor{gnat_rm/implementation_of_specific_ada_features id2}@anchor{419}
@section Machine Code Insertions
@@ -25980,7 +26044,7 @@ according to normal visibility rules. In particular if there is no
qualification is required.
@node GNAT Implementation of Tasking,GNAT Implementation of Shared Passive Packages,Machine Code Insertions,Implementation of Specific Ada Features
-@anchor{gnat_rm/implementation_of_specific_ada_features id3}@anchor{419}@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-tasking}@anchor{41a}
+@anchor{gnat_rm/implementation_of_specific_ada_features id3}@anchor{41a}@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-tasking}@anchor{41b}
@section GNAT Implementation of Tasking
@@ -25996,7 +26060,7 @@ to compliance with the Real-Time Systems Annex.
@end menu
@node Mapping Ada Tasks onto the Underlying Kernel Threads,Ensuring Compliance with the Real-Time Annex,,GNAT Implementation of Tasking
-@anchor{gnat_rm/implementation_of_specific_ada_features mapping-ada-tasks-onto-the-underlying-kernel-threads}@anchor{41b}@anchor{gnat_rm/implementation_of_specific_ada_features id4}@anchor{41c}
+@anchor{gnat_rm/implementation_of_specific_ada_features mapping-ada-tasks-onto-the-underlying-kernel-threads}@anchor{41c}@anchor{gnat_rm/implementation_of_specific_ada_features id4}@anchor{41d}
@subsection Mapping Ada Tasks onto the Underlying Kernel Threads
@@ -26065,7 +26129,7 @@ support this functionality when the parent contains more than one task.
@geindex Forking a new process
@node Ensuring Compliance with the Real-Time Annex,Support for Locking Policies,Mapping Ada Tasks onto the Underlying Kernel Threads,GNAT Implementation of Tasking
-@anchor{gnat_rm/implementation_of_specific_ada_features id5}@anchor{41d}@anchor{gnat_rm/implementation_of_specific_ada_features ensuring-compliance-with-the-real-time-annex}@anchor{41e}
+@anchor{gnat_rm/implementation_of_specific_ada_features id5}@anchor{41e}@anchor{gnat_rm/implementation_of_specific_ada_features ensuring-compliance-with-the-real-time-annex}@anchor{41f}
@subsection Ensuring Compliance with the Real-Time Annex
@@ -26116,7 +26180,7 @@ placed at the end.
@c Support_for_Locking_Policies
@node Support for Locking Policies,,Ensuring Compliance with the Real-Time Annex,GNAT Implementation of Tasking
-@anchor{gnat_rm/implementation_of_specific_ada_features support-for-locking-policies}@anchor{41f}
+@anchor{gnat_rm/implementation_of_specific_ada_features support-for-locking-policies}@anchor{420}
@subsection Support for Locking Policies
@@ -26150,7 +26214,7 @@ then ceiling locking is used.
Otherwise, the @code{Ceiling_Locking} policy is ignored.
@node GNAT Implementation of Shared Passive Packages,Code Generation for Array Aggregates,GNAT Implementation of Tasking,Implementation of Specific Ada Features
-@anchor{gnat_rm/implementation_of_specific_ada_features id6}@anchor{420}@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-shared-passive-packages}@anchor{421}
+@anchor{gnat_rm/implementation_of_specific_ada_features id6}@anchor{421}@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-shared-passive-packages}@anchor{422}
@section GNAT Implementation of Shared Passive Packages
@@ -26251,7 +26315,7 @@ GNAT supports shared passive packages on all platforms
except for OpenVMS.
@node Code Generation for Array Aggregates,The Size of Discriminated Records with Default Discriminants,GNAT Implementation of Shared Passive Packages,Implementation of Specific Ada Features
-@anchor{gnat_rm/implementation_of_specific_ada_features code-generation-for-array-aggregates}@anchor{422}@anchor{gnat_rm/implementation_of_specific_ada_features id7}@anchor{423}
+@anchor{gnat_rm/implementation_of_specific_ada_features code-generation-for-array-aggregates}@anchor{423}@anchor{gnat_rm/implementation_of_specific_ada_features id7}@anchor{424}
@section Code Generation for Array Aggregates
@@ -26282,7 +26346,7 @@ component values and static subtypes also lead to simpler code.
@end menu
@node Static constant aggregates with static bounds,Constant aggregates with unconstrained nominal types,,Code Generation for Array Aggregates
-@anchor{gnat_rm/implementation_of_specific_ada_features static-constant-aggregates-with-static-bounds}@anchor{424}@anchor{gnat_rm/implementation_of_specific_ada_features id8}@anchor{425}
+@anchor{gnat_rm/implementation_of_specific_ada_features static-constant-aggregates-with-static-bounds}@anchor{425}@anchor{gnat_rm/implementation_of_specific_ada_features id8}@anchor{426}
@subsection Static constant aggregates with static bounds
@@ -26329,7 +26393,7 @@ Zero2: constant two_dim := (others => (others => 0));
@end example
@node Constant aggregates with unconstrained nominal types,Aggregates with static bounds,Static constant aggregates with static bounds,Code Generation for Array Aggregates
-@anchor{gnat_rm/implementation_of_specific_ada_features constant-aggregates-with-unconstrained-nominal-types}@anchor{426}@anchor{gnat_rm/implementation_of_specific_ada_features id9}@anchor{427}
+@anchor{gnat_rm/implementation_of_specific_ada_features constant-aggregates-with-unconstrained-nominal-types}@anchor{427}@anchor{gnat_rm/implementation_of_specific_ada_features id9}@anchor{428}
@subsection Constant aggregates with unconstrained nominal types
@@ -26344,7 +26408,7 @@ Cr_Unc : constant One_Unc := (12,24,36);
@end example
@node Aggregates with static bounds,Aggregates with nonstatic bounds,Constant aggregates with unconstrained nominal types,Code Generation for Array Aggregates
-@anchor{gnat_rm/implementation_of_specific_ada_features id10}@anchor{428}@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-static-bounds}@anchor{429}
+@anchor{gnat_rm/implementation_of_specific_ada_features id10}@anchor{429}@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-static-bounds}@anchor{42a}
@subsection Aggregates with static bounds
@@ -26372,7 +26436,7 @@ end loop;
@end example
@node Aggregates with nonstatic bounds,Aggregates in assignment statements,Aggregates with static bounds,Code Generation for Array Aggregates
-@anchor{gnat_rm/implementation_of_specific_ada_features id11}@anchor{42a}@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-nonstatic-bounds}@anchor{42b}
+@anchor{gnat_rm/implementation_of_specific_ada_features id11}@anchor{42b}@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-nonstatic-bounds}@anchor{42c}
@subsection Aggregates with nonstatic bounds
@@ -26383,7 +26447,7 @@ have to be applied to sub-arrays individually, if they do not have statically
compatible subtypes.
@node Aggregates in assignment statements,,Aggregates with nonstatic bounds,Code Generation for Array Aggregates
-@anchor{gnat_rm/implementation_of_specific_ada_features id12}@anchor{42c}@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-in-assignment-statements}@anchor{42d}
+@anchor{gnat_rm/implementation_of_specific_ada_features id12}@anchor{42d}@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-in-assignment-statements}@anchor{42e}
@subsection Aggregates in assignment statements
@@ -26425,7 +26489,7 @@ a temporary (created either by the front-end or the code generator) and then
that temporary will be copied onto the target.
@node The Size of Discriminated Records with Default Discriminants,Strict Conformance to the Ada Reference Manual,Code Generation for Array Aggregates,Implementation of Specific Ada Features
-@anchor{gnat_rm/implementation_of_specific_ada_features id13}@anchor{42e}@anchor{gnat_rm/implementation_of_specific_ada_features the-size-of-discriminated-records-with-default-discriminants}@anchor{42f}
+@anchor{gnat_rm/implementation_of_specific_ada_features id13}@anchor{42f}@anchor{gnat_rm/implementation_of_specific_ada_features the-size-of-discriminated-records-with-default-discriminants}@anchor{430}
@section The Size of Discriminated Records with Default Discriminants
@@ -26505,7 +26569,7 @@ say) must be consistent, so it is imperative that the object, once created,
remain invariant.
@node Strict Conformance to the Ada Reference Manual,,The Size of Discriminated Records with Default Discriminants,Implementation of Specific Ada Features
-@anchor{gnat_rm/implementation_of_specific_ada_features strict-conformance-to-the-ada-reference-manual}@anchor{430}@anchor{gnat_rm/implementation_of_specific_ada_features id14}@anchor{431}
+@anchor{gnat_rm/implementation_of_specific_ada_features strict-conformance-to-the-ada-reference-manual}@anchor{431}@anchor{gnat_rm/implementation_of_specific_ada_features id14}@anchor{432}
@section Strict Conformance to the Ada Reference Manual
@@ -26532,7 +26596,7 @@ behavior (although at the cost of a significant performance penalty), so
infinite and NaN values are properly generated.
@node Implementation of Ada 2012 Features,Obsolescent Features,Implementation of Specific Ada Features,Top
-@anchor{gnat_rm/implementation_of_ada_2012_features doc}@anchor{432}@anchor{gnat_rm/implementation_of_ada_2012_features implementation-of-ada-2012-features}@anchor{14}@anchor{gnat_rm/implementation_of_ada_2012_features id1}@anchor{433}
+@anchor{gnat_rm/implementation_of_ada_2012_features doc}@anchor{433}@anchor{gnat_rm/implementation_of_ada_2012_features implementation-of-ada-2012-features}@anchor{14}@anchor{gnat_rm/implementation_of_ada_2012_features id1}@anchor{434}
@chapter Implementation of Ada 2012 Features
@@ -28698,7 +28762,7 @@ RM References: H.04 (8/1)
@end itemize
@node Obsolescent Features,Compatibility and Porting Guide,Implementation of Ada 2012 Features,Top
-@anchor{gnat_rm/obsolescent_features id1}@anchor{434}@anchor{gnat_rm/obsolescent_features doc}@anchor{435}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{15}
+@anchor{gnat_rm/obsolescent_features id1}@anchor{435}@anchor{gnat_rm/obsolescent_features doc}@anchor{436}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{15}
@chapter Obsolescent Features
@@ -28717,7 +28781,7 @@ compatibility purposes.
@end menu
@node pragma No_Run_Time,pragma Ravenscar,,Obsolescent Features
-@anchor{gnat_rm/obsolescent_features id2}@anchor{436}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{437}
+@anchor{gnat_rm/obsolescent_features id2}@anchor{437}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{438}
@section pragma No_Run_Time
@@ -28730,7 +28794,7 @@ preferred usage is to use an appropriately configured run-time that
includes just those features that are to be made accessible.
@node pragma Ravenscar,pragma Restricted_Run_Time,pragma No_Run_Time,Obsolescent Features
-@anchor{gnat_rm/obsolescent_features id3}@anchor{438}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{439}
+@anchor{gnat_rm/obsolescent_features id3}@anchor{439}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{43a}
@section pragma Ravenscar
@@ -28739,7 +28803,7 @@ The pragma @code{Ravenscar} has exactly the same effect as pragma
is part of the new Ada 2005 standard.
@node pragma Restricted_Run_Time,pragma Task_Info,pragma Ravenscar,Obsolescent Features
-@anchor{gnat_rm/obsolescent_features pragma-restricted-run-time}@anchor{43a}@anchor{gnat_rm/obsolescent_features id4}@anchor{43b}
+@anchor{gnat_rm/obsolescent_features pragma-restricted-run-time}@anchor{43b}@anchor{gnat_rm/obsolescent_features id4}@anchor{43c}
@section pragma Restricted_Run_Time
@@ -28749,7 +28813,7 @@ preferred since the Ada 2005 pragma @code{Profile} is intended for
this kind of implementation dependent addition.
@node pragma Task_Info,package System Task_Info s-tasinf ads,pragma Restricted_Run_Time,Obsolescent Features
-@anchor{gnat_rm/obsolescent_features pragma-task-info}@anchor{43c}@anchor{gnat_rm/obsolescent_features id5}@anchor{43d}
+@anchor{gnat_rm/obsolescent_features pragma-task-info}@anchor{43d}@anchor{gnat_rm/obsolescent_features id5}@anchor{43e}
@section pragma Task_Info
@@ -28775,7 +28839,7 @@ in the spec of package System.Task_Info in the runtime
library.
@node package System Task_Info s-tasinf ads,,pragma Task_Info,Obsolescent Features
-@anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{43e}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{43f}
+@anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{43f}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{440}
@section package System.Task_Info (@code{s-tasinf.ads})
@@ -28785,7 +28849,7 @@ to support the @code{Task_Info} pragma. The predefined Ada package
standard replacement for GNAT's @code{Task_Info} functionality.
@node Compatibility and Porting Guide,GNU Free Documentation License,Obsolescent Features,Top
-@anchor{gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide}@anchor{16}@anchor{gnat_rm/compatibility_and_porting_guide doc}@anchor{440}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{441}
+@anchor{gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide}@anchor{16}@anchor{gnat_rm/compatibility_and_porting_guide doc}@anchor{441}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{442}
@chapter Compatibility and Porting Guide
@@ -28807,7 +28871,7 @@ applications developed in other Ada environments.
@end menu
@node Writing Portable Fixed-Point Declarations,Compatibility with Ada 83,,Compatibility and Porting Guide
-@anchor{gnat_rm/compatibility_and_porting_guide id2}@anchor{442}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{443}
+@anchor{gnat_rm/compatibility_and_porting_guide id2}@anchor{443}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{444}
@section Writing Portable Fixed-Point Declarations
@@ -28929,7 +28993,7 @@ If you follow this scheme you will be guaranteed that your fixed-point
types will be portable.
@node Compatibility with Ada 83,Compatibility between Ada 95 and Ada 2005,Writing Portable Fixed-Point Declarations,Compatibility and Porting Guide
-@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-ada-83}@anchor{444}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{445}
+@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-ada-83}@anchor{445}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{446}
@section Compatibility with Ada 83
@@ -28957,7 +29021,7 @@ following subsections treat the most likely issues to be encountered.
@end menu
@node Legal Ada 83 programs that are illegal in Ada 95,More deterministic semantics,,Compatibility with Ada 83
-@anchor{gnat_rm/compatibility_and_porting_guide id4}@anchor{446}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{447}
+@anchor{gnat_rm/compatibility_and_porting_guide id4}@anchor{447}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{448}
@subsection Legal Ada 83 programs that are illegal in Ada 95
@@ -29057,7 +29121,7 @@ the fix is usually simply to add the @code{(<>)} to the generic declaration.
@end itemize
@node More deterministic semantics,Changed semantics,Legal Ada 83 programs that are illegal in Ada 95,Compatibility with Ada 83
-@anchor{gnat_rm/compatibility_and_porting_guide more-deterministic-semantics}@anchor{448}@anchor{gnat_rm/compatibility_and_porting_guide id5}@anchor{449}
+@anchor{gnat_rm/compatibility_and_porting_guide more-deterministic-semantics}@anchor{449}@anchor{gnat_rm/compatibility_and_porting_guide id5}@anchor{44a}
@subsection More deterministic semantics
@@ -29085,7 +29149,7 @@ which open select branches are executed.
@end itemize
@node Changed semantics,Other language compatibility issues,More deterministic semantics,Compatibility with Ada 83
-@anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{44a}@anchor{gnat_rm/compatibility_and_porting_guide changed-semantics}@anchor{44b}
+@anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{44b}@anchor{gnat_rm/compatibility_and_porting_guide changed-semantics}@anchor{44c}
@subsection Changed semantics
@@ -29127,7 +29191,7 @@ covers only the restricted range.
@end itemize
@node Other language compatibility issues,,Changed semantics,Compatibility with Ada 83
-@anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{44c}@anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{44d}
+@anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{44d}@anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{44e}
@subsection Other language compatibility issues
@@ -29160,7 +29224,7 @@ include @code{pragma Interface} and the floating point type attributes
@end itemize
@node Compatibility between Ada 95 and Ada 2005,Implementation-dependent characteristics,Compatibility with Ada 83,Compatibility and Porting Guide
-@anchor{gnat_rm/compatibility_and_porting_guide compatibility-between-ada-95-and-ada-2005}@anchor{44e}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{44f}
+@anchor{gnat_rm/compatibility_and_porting_guide compatibility-between-ada-95-and-ada-2005}@anchor{44f}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{450}
@section Compatibility between Ada 95 and Ada 2005
@@ -29232,7 +29296,7 @@ can declare a function returning a value from an anonymous access type.
@end itemize
@node Implementation-dependent characteristics,Compatibility with Other Ada Systems,Compatibility between Ada 95 and Ada 2005,Compatibility and Porting Guide
-@anchor{gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics}@anchor{450}@anchor{gnat_rm/compatibility_and_porting_guide id9}@anchor{451}
+@anchor{gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics}@anchor{451}@anchor{gnat_rm/compatibility_and_porting_guide id9}@anchor{452}
@section Implementation-dependent characteristics
@@ -29255,7 +29319,7 @@ transition from certain Ada 83 compilers.
@end menu
@node Implementation-defined pragmas,Implementation-defined attributes,,Implementation-dependent characteristics
-@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{452}@anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{453}
+@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{453}@anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{454}
@subsection Implementation-defined pragmas
@@ -29277,7 +29341,7 @@ avoiding compiler rejection of units that contain such pragmas; they are not
relevant in a GNAT context and hence are not otherwise implemented.
@node Implementation-defined attributes,Libraries,Implementation-defined pragmas,Implementation-dependent characteristics
-@anchor{gnat_rm/compatibility_and_porting_guide id11}@anchor{454}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{455}
+@anchor{gnat_rm/compatibility_and_porting_guide id11}@anchor{455}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{456}
@subsection Implementation-defined attributes
@@ -29291,7 +29355,7 @@ Ada 83, GNAT supplies the attributes @code{Bit}, @code{Machine_Size} and
@code{Type_Class}.
@node Libraries,Elaboration order,Implementation-defined attributes,Implementation-dependent characteristics
-@anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{456}@anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{457}
+@anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{457}@anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{458}
@subsection Libraries
@@ -29320,7 +29384,7 @@ be preferable to retrofit the application using modular types.
@end itemize
@node Elaboration order,Target-specific aspects,Libraries,Implementation-dependent characteristics
-@anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{458}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{459}
+@anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{459}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{45a}
@subsection Elaboration order
@@ -29356,7 +29420,7 @@ pragmas either globally (as an effect of the @emph{-gnatE} switch) or locally
@end itemize
@node Target-specific aspects,,Elaboration order,Implementation-dependent characteristics
-@anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{45a}@anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{45b}
+@anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{45b}@anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{45c}
@subsection Target-specific aspects
@@ -29369,10 +29433,10 @@ on the robustness of the original design. Moreover, Ada 95 (and thus
Ada 2005 and Ada 2012) are sometimes
incompatible with typical Ada 83 compiler practices regarding implicit
packing, the meaning of the Size attribute, and the size of access values.
-GNAT's approach to these issues is described in @ref{45c,,Representation Clauses}.
+GNAT's approach to these issues is described in @ref{45d,,Representation Clauses}.
@node Compatibility with Other Ada Systems,Representation Clauses,Implementation-dependent characteristics,Compatibility and Porting Guide
-@anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{45d}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-other-ada-systems}@anchor{45e}
+@anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{45e}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-other-ada-systems}@anchor{45f}
@section Compatibility with Other Ada Systems
@@ -29415,7 +29479,7 @@ far beyond this minimal set, as described in the next section.
@end itemize
@node Representation Clauses,Compatibility with HP Ada 83,Compatibility with Other Ada Systems,Compatibility and Porting Guide
-@anchor{gnat_rm/compatibility_and_porting_guide representation-clauses}@anchor{45c}@anchor{gnat_rm/compatibility_and_porting_guide id16}@anchor{45f}
+@anchor{gnat_rm/compatibility_and_porting_guide representation-clauses}@anchor{45d}@anchor{gnat_rm/compatibility_and_porting_guide id16}@anchor{460}
@section Representation Clauses
@@ -29508,7 +29572,7 @@ with thin pointers.
@end itemize
@node Compatibility with HP Ada 83,,Representation Clauses,Compatibility and Porting Guide
-@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-hp-ada-83}@anchor{460}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{461}
+@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-hp-ada-83}@anchor{461}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{462}
@section Compatibility with HP Ada 83
@@ -29538,7 +29602,7 @@ extension of package System.
@end itemize
@node GNU Free Documentation License,Index,Compatibility and Porting Guide,Top
-@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license doc}@anchor{462}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{463}
+@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license doc}@anchor{463}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{464}
@chapter GNU Free Documentation License
diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi
index 3e0c857..c2dd053 100644
--- a/gcc/ada/gnat_ugn.texi
+++ b/gcc/ada/gnat_ugn.texi
@@ -10925,7 +10925,7 @@ of the pragma in the @cite{GNAT_Reference_manual}).
@emph{Activate most optional warnings.}
-This switch activates most optional warning messages. See the remaining list
+This switch activates most optional warning messages. See the remaining list
in this section for details on optional warning messages that can be
individually controlled. The warnings that are not turned on by this
switch are:
@@ -10970,6 +10970,9 @@ switch are:
@code{-gnatw.q} (questionable layout of record types)
@item
+@code{-gnatw_r} (out-of-order record representation clauses)
+
+@item
@code{-gnatw.s} (overridden size clause)
@item
@@ -12225,7 +12228,7 @@ opposed to renaming the function itself). The default is that these
warnings are given.
@end table
-@geindex -gnatwT (gcc)
+@geindex -gnatw.R (gcc)
@table @asis
@@ -12237,6 +12240,31 @@ warnings are given.
This switch suppresses warnings for object renaming function.
@end table
+@geindex -gnatw_r (gcc)
+
+
+@table @asis
+
+@item @code{-gnatw_r}
+
+@emph{Activate warnings for out-of-order record representation clauses.}
+
+This switch activates warnings for record representation clauses,
+if the order of component declarations, component clauses,
+and bit-level layout do not all agree.
+The default is that these warnings are not given.
+@end table
+
+@geindex -gnatw_R (gcc)
+
+
+@table @asis
+
+@item @code{-gnatw_R}
+
+@emph{Suppress warnings for out-of-order record representation clauses.}
+@end table
+
@geindex -gnatws (gcc)
diff --git a/gcc/ada/impunit.adb b/gcc/ada/impunit.adb
index 4cf8535..7e67569 100644
--- a/gcc/ada/impunit.adb
+++ b/gcc/ada/impunit.adb
@@ -692,19 +692,10 @@ package body Impunit is
return Not_Predefined_Unit;
end if;
- -- To be considered predefined, the file name must end in .ads or .adb.
- -- File names with other extensions (coming from the use of non-standard
- -- file naming schemes) can never be predefined.
-
- -- Note that in the context of a compiler, the .adb case will never
- -- arise. However it can arise for other tools, e.g. gnatprove uses
- -- this routine to detect when a construct comes from an instance of
- -- a generic defined in a predefined unit.
-
- if File (File'Last - 3 .. File'Last) /= ".ads"
- and then
- File (File'Last - 3 .. File'Last) /= ".adb"
- then
+ -- Not predefined if file name does not end in .ads. This can happen
+ -- when non-standard file names are being used.
+
+ if Name_Buffer (Name_Len - 3 .. Name_Len) /= ".ads" then
return Not_Predefined_Unit;
end if;
diff --git a/gcc/ada/inline.adb b/gcc/ada/inline.adb
index 46daa48..e5ecb55 100644
--- a/gcc/ada/inline.adb
+++ b/gcc/ada/inline.adb
@@ -635,8 +635,8 @@ package body Inline is
-- declares the type, and that body is visible to the back end.
-- Do not inline it either if it is in the main unit.
-- Extend the -gnatn2 processing to -gnatn1 for Inline_Always
- -- calls if the back-end takes care of inlining the call.
- -- Note that Level is in Inline_Call | Inline_Packag here.
+ -- calls if the back end takes care of inlining the call.
+ -- Note that Level is in Inline_Call | Inline_Package here.
elsif ((Level = Inline_Call
and then Has_Pragma_Inline_Always (E)
diff --git a/gcc/ada/lib-load.adb b/gcc/ada/lib-load.adb
index 4b7b995..25c8794 100644
--- a/gcc/ada/lib-load.adb
+++ b/gcc/ada/lib-load.adb
@@ -245,6 +245,8 @@ package body Lib.Load is
Version => 0,
OA_Setting => 'O');
+ Init_Unit_Name (Unum, Spec_Name);
+
Set_Comes_From_Source_Default (Save_CS);
Set_Error_Posted (Cunit_Entity);
Set_Error_Posted (Cunit);
@@ -607,11 +609,10 @@ package body Lib.Load is
-- See if we already have an entry for this unit
- Unum := Main_Unit;
- while Unum <= Units.Last loop
- exit when Uname_Actual = Units.Table (Unum).Unit_Name;
- Unum := Unum + 1;
- end loop;
+ Unum := Unit_Names.Get (Uname_Actual);
+ if Unum = No_Unit then
+ Unum := Units.Last + 1;
+ end if;
-- Whether or not the entry was found, Unum is now the right value,
-- since it is one more than Units.Last (i.e. the index of the new
@@ -727,7 +728,7 @@ package body Lib.Load is
-- found case to print the dependency chain including the last entry
Units.Increment_Last;
- Units.Table (Unum).Unit_Name := Uname_Actual;
+ Init_Unit_Name (Unum, Uname_Actual);
-- File was found
@@ -893,14 +894,14 @@ package body Lib.Load is
-- subsequent missing files.
Load_Stack.Decrement_Last;
- Units.Decrement_Last;
+ Remove_Unit (Unum);
-- If unit not required, remove load stack entry and the junk
-- file table entry, and return No_Unit to indicate not found,
else
Load_Stack.Decrement_Last;
- Units.Decrement_Last;
+ Remove_Unit (Unum);
end if;
Unum := No_Unit;
@@ -921,17 +922,17 @@ package body Lib.Load is
--------------------------
procedure Make_Child_Decl_Unit (N : Node_Id) is
- Unit_Decl : constant Node_Id := Library_Unit (N);
+ Unit_Decl : constant Node_Id := Library_Unit (N);
+ Unit_Num : constant Unit_Number_Type := Get_Cunit_Unit_Number (N);
begin
Units.Increment_Last;
- Units.Table (Units.Last) := Units.Table (Get_Cunit_Unit_Number (N));
- Units.Table (Units.Last).Unit_Name :=
- Get_Spec_Name (Unit_Name (Get_Cunit_Unit_Number (N)));
+ Units.Table (Units.Last) := Units.Table (Unit_Num);
Units.Table (Units.Last).Cunit := Unit_Decl;
Units.Table (Units.Last).Cunit_Entity :=
Defining_Identifier
(Defining_Unit_Name (Specification (Unit (Unit_Decl))));
+ Init_Unit_Name (Units.Last, Get_Spec_Name (Unit_Name (Unit_Num)));
-- The library unit created for of a child subprogram unit plays no
-- role in code generation and binding, so label it accordingly.
@@ -963,11 +964,13 @@ package body Lib.Load is
Units.Table (Units.Last) := Units.Table (Main_Unit);
Units.Table (Units.Last).Cunit := Library_Unit (N);
Units.Table (Units.Last).Generate_Code := True;
+ Init_Unit_Name (Units.Last, Unit_Name (Main_Unit));
+
Units.Table (Main_Unit).Cunit := N;
- Units.Table (Main_Unit).Unit_Name :=
- Get_Body_Name
- (Unit_Name (Get_Cunit_Unit_Number (Library_Unit (N))));
Units.Table (Main_Unit).Version := Source_Checksum (Sind);
+ Init_Unit_Name (Main_Unit,
+ Get_Body_Name
+ (Unit_Name (Get_Cunit_Unit_Number (Library_Unit (N)))));
else
-- Duplicate information from instance unit, for the body. The unit
diff --git a/gcc/ada/lib-writ.adb b/gcc/ada/lib-writ.adb
index 987afcb..d877e7b 100644
--- a/gcc/ada/lib-writ.adb
+++ b/gcc/ada/lib-writ.adb
@@ -189,6 +189,7 @@ package body Lib.Writ is
Version => 0,
Error_Location => No_Location,
OA_Setting => 'O');
+ Init_Unit_Name (Units.Last, System_Uname);
-- Parse system.ads so that the checksum is set right. Style checks are
-- not applied. The Ekind is set to ensure that this reference is always
diff --git a/gcc/ada/lib.adb b/gcc/ada/lib.adb
index 901ca3b..d04f0a4 100644
--- a/gcc/ada/lib.adb
+++ b/gcc/ada/lib.adb
@@ -277,8 +277,24 @@ package body Lib is
end Set_OA_Setting;
procedure Set_Unit_Name (U : Unit_Number_Type; N : Unit_Name_Type) is
+ Old_N : constant Unit_Name_Type := Units.Table (U).Unit_Name;
+
begin
+ -- First unregister the old name, if any
+
+ if Old_N /= No_Unit_Name and then Unit_Names.Get (Old_N) = U then
+ Unit_Names.Set (Old_N, No_Unit);
+ end if;
+
+ -- Then set the new name
+
Units.Table (U).Unit_Name := N;
+
+ -- Finally register the new name
+
+ if Unit_Names.Get (N) = No_Unit then
+ Unit_Names.Set (N, U);
+ end if;
end Set_Unit_Name;
------------------------------
@@ -1068,6 +1084,16 @@ package body Lib is
return TSN;
end Increment_Serial_Number;
+ ----------------------
+ -- Init_Unit_Name --
+ ----------------------
+
+ procedure Init_Unit_Name (U : Unit_Number_Type; N : Unit_Name_Type) is
+ begin
+ Units.Table (U).Unit_Name := N;
+ Unit_Names.Set (N, U);
+ end Init_Unit_Name;
+
----------------
-- Initialize --
----------------
@@ -1087,13 +1113,7 @@ package body Lib is
function Is_Loaded (Uname : Unit_Name_Type) return Boolean is
begin
- for Unum in Units.First .. Units.Last loop
- if Uname = Unit_Name (Unum) then
- return True;
- end if;
- end loop;
-
- return False;
+ return Unit_Names.Get (Uname) /= No_Unit;
end Is_Loaded;
---------------
@@ -1141,6 +1161,7 @@ package body Lib is
procedure Remove_Unit (U : Unit_Number_Type) is
begin
if U = Units.Last then
+ Unit_Names.Set (Unit_Name (U), No_Unit);
Units.Decrement_Last;
end if;
end Remove_Unit;
@@ -1277,6 +1298,15 @@ package body Lib is
end loop;
end Tree_Write;
+ --------------------
+ -- Unit_Name_Hash --
+ --------------------
+
+ function Unit_Name_Hash (Id : Unit_Name_Type) return Unit_Name_Header_Num is
+ begin
+ return Unit_Name_Header_Num (Id mod Unit_Name_Table_Size);
+ end Unit_Name_Hash;
+
------------
-- Unlock --
------------
diff --git a/gcc/ada/lib.ads b/gcc/ada/lib.ads
index 504120e..7665f86 100644
--- a/gcc/ada/lib.ads
+++ b/gcc/ada/lib.ads
@@ -37,6 +37,8 @@ with Namet; use Namet;
with Table;
with Types; use Types;
+with GNAT.HTable;
+
package Lib is
type Unit_Ref_Table is array (Pos range <>) of Unit_Number_Type;
@@ -823,21 +825,22 @@ private
pragma Inline (Increment_Primary_Stack_Count);
pragma Inline (Increment_Sec_Stack_Count);
pragma Inline (Increment_Serial_Number);
+ pragma Inline (Is_Internal_Unit);
+ pragma Inline (Is_Loaded);
+ pragma Inline (Is_Predefined_Renaming);
+ pragma Inline (Is_Predefined_Unit);
pragma Inline (Loading);
pragma Inline (Main_CPU);
pragma Inline (Main_Priority);
pragma Inline (Munit_Index);
pragma Inline (No_Elab_Code_All);
pragma Inline (OA_Setting);
+ pragma Inline (Primary_Stack_Count);
pragma Inline (Set_Cunit);
pragma Inline (Set_Cunit_Entity);
pragma Inline (Set_Fatal_Error);
pragma Inline (Set_Generate_Code);
pragma Inline (Set_Has_RACW);
- pragma Inline (Is_Predefined_Renaming);
- pragma Inline (Is_Internal_Unit);
- pragma Inline (Is_Predefined_Unit);
- pragma Inline (Primary_Stack_Count);
pragma Inline (Sec_Stack_Count);
pragma Inline (Set_Loading);
pragma Inline (Set_Main_CPU);
@@ -930,6 +933,36 @@ private
Table_Increment => Alloc.Units_Increment,
Table_Name => "Units");
+ -- The following table records a mapping between a name and the entry in
+ -- the units table whose Unit_Name is this name. It is used to speed up
+ -- the Is_Loaded function, whose original implementation (linear search)
+ -- could account for 2% of the time spent in the front end. Note that, in
+ -- the case of source files containing multiple units, the units table may
+ -- temporarily contain two entries with the same Unit_Name during parsing,
+ -- which means that the mapping must be to the first entry in the table.
+
+ Unit_Name_Table_Size : constant := 257;
+ -- Number of headers in hash table
+
+ subtype Unit_Name_Header_Num is Integer range 0 .. Unit_Name_Table_Size - 1;
+ -- Range of headers in hash table
+
+ function Unit_Name_Hash (Id : Unit_Name_Type) return Unit_Name_Header_Num;
+ -- Simple hash function for Unit_Name_Types
+
+ package Unit_Names is new GNAT.Htable.Simple_HTable
+ (Header_Num => Unit_Name_Header_Num,
+ Element => Unit_Number_Type,
+ No_Element => No_Unit,
+ Key => Unit_Name_Type,
+ Hash => Unit_Name_Hash,
+ Equal => "=");
+
+ procedure Init_Unit_Name (U : Unit_Number_Type; N : Unit_Name_Type);
+ pragma Inline (Init_Unit_Name);
+ -- Both set the Unit_Name for the given units table entry and register a
+ -- mapping between this name and the entry.
+
-- The following table stores strings from pragma Linker_Option lines
type Linker_Option_Entry is record
diff --git a/gcc/ada/libgnat/a-cborma.adb b/gcc/ada/libgnat/a-cborma.adb
index a7969fe..55be7ad 100644
--- a/gcc/ada/libgnat/a-cborma.adb
+++ b/gcc/ada/libgnat/a-cborma.adb
@@ -374,7 +374,9 @@ package body Ada.Containers.Bounded_Ordered_Maps is
procedure Clear (Container : in out Map) is
begin
- Tree_Operations.Clear_Tree (Container);
+ while not Container.Is_Empty loop
+ Container.Delete_Last;
+ end loop;
end Clear;
-----------
diff --git a/gcc/ada/libgnat/a-cborse.adb b/gcc/ada/libgnat/a-cborse.adb
index 363351a4..9fdba26 100644
--- a/gcc/ada/libgnat/a-cborse.adb
+++ b/gcc/ada/libgnat/a-cborse.adb
@@ -374,7 +374,9 @@ package body Ada.Containers.Bounded_Ordered_Sets is
procedure Clear (Container : in out Set) is
begin
- Tree_Operations.Clear_Tree (Container);
+ while not Container.Is_Empty loop
+ Container.Delete_Last;
+ end loop;
end Clear;
-----------
diff --git a/gcc/ada/libgnat/a-cofove.ads b/gcc/ada/libgnat/a-cofove.ads
index b23c661..5fb3bc9 100644
--- a/gcc/ada/libgnat/a-cofove.ads
+++ b/gcc/ada/libgnat/a-cofove.ads
@@ -70,7 +70,11 @@ is
subtype Capacity_Range is Count_Type range 0 .. Last_Count;
type Vector (Capacity : Capacity_Range) is private with
- Default_Initial_Condition => Is_Empty (Vector);
+ Default_Initial_Condition => Is_Empty (Vector),
+ Iterable => (First => Iter_First,
+ Has_Element => Iter_Has_Element,
+ Next => Iter_Next,
+ Element => Element);
function Length (Container : Vector) return Capacity_Range with
Global => null,
@@ -173,6 +177,7 @@ is
Ghost,
Global => null,
Post => M.Length (Model'Result) = Length (Container);
+ pragma Annotate (GNATprove, Iterable_For_Proof, "Model", Model);
function Element
(S : M.Sequence;
@@ -859,6 +864,30 @@ is
Model (Target)'Old);
end Generic_Sorting;
+ ---------------------------
+ -- Iteration Primitives --
+ ---------------------------
+
+ function Iter_First (Container : Vector) return Extended_Index with
+ Global => null;
+
+ function Iter_Has_Element
+ (Container : Vector;
+ Position : Extended_Index) return Boolean
+ with
+ Global => null,
+ Post =>
+ Iter_Has_Element'Result =
+ (Position in Index_Type'First .. Last_Index (Container));
+ pragma Annotate (GNATprove, Inline_For_Proof, Iter_Has_Element);
+
+ function Iter_Next
+ (Container : Vector;
+ Position : Extended_Index) return Extended_Index
+ with
+ Global => null,
+ Pre => Iter_Has_Element (Container, Position);
+
private
pragma SPARK_Mode (Off);
@@ -882,4 +911,22 @@ private
function Empty_Vector return Vector is
((Capacity => 0, others => <>));
+ function Iter_First (Container : Vector) return Extended_Index is
+ (Index_Type'First);
+
+ function Iter_Next
+ (Container : Vector;
+ Position : Extended_Index) return Extended_Index
+ is
+ (if Position = Extended_Index'Last then
+ Extended_Index'First
+ else
+ Extended_Index'Succ (Position));
+
+ function Iter_Has_Element
+ (Container : Vector;
+ Position : Extended_Index) return Boolean
+ is
+ (Position in Index_Type'First .. Container.Last);
+
end Ada.Containers.Formal_Vectors;
diff --git a/gcc/ada/libgnat/a-locale.ads b/gcc/ada/libgnat/a-locale.ads
index 314001a..418c41e 100644
--- a/gcc/ada/libgnat/a-locale.ads
+++ b/gcc/ada/libgnat/a-locale.ads
@@ -20,9 +20,9 @@ package Ada.Locales is
pragma Remote_Types (Locales);
-- A locale identifies a geopolitical place or region and its associated
- -- language, which can be used to determine other
- -- internationalization-related characteristics. The active locale is the
- -- locale associated with the partition of the current task.
+ -- language, which can be used to determine other internationalization-
+ -- related characteristics. The active locale is the locale associated with
+ -- the partition of the current task.
type Language_Code is new String (1 .. 3)
with Dynamic_Predicate =>
diff --git a/gcc/ada/libgnat/g-comlin.ads b/gcc/ada/libgnat/g-comlin.ads
index 3708c37..188b035 100644
--- a/gcc/ada/libgnat/g-comlin.ads
+++ b/gcc/ada/libgnat/g-comlin.ads
@@ -731,8 +731,8 @@ package GNAT.Command_Line is
-- Full_Switch omits the first leading '-'.
Exit_From_Command_Line : exception;
- -- Emitted when the program should exit. This is called when Getopt below
- -- has seen -h, --help or an invalid switch.
+ -- Raised when the program should exit because Getopt below has seen
+ -- a -h or --help switch.
procedure Getopt
(Config : Command_Line_Configuration;
diff --git a/gcc/ada/libgnat/g-expect.adb b/gcc/ada/libgnat/g-expect.adb
index 8601f6b..21c7913 100644
--- a/gcc/ada/libgnat/g-expect.adb
+++ b/gcc/ada/libgnat/g-expect.adb
@@ -692,15 +692,21 @@ package body GNAT.Expect is
Buffer_Size := 4096;
end if;
- N := Read (Descriptors (D).Output_Fd, Buffer'Address,
- Buffer_Size);
+ -- Read may be interrupted on Linux by a signal and
+ -- need to be repeated. We don't want to check for
+ -- errno = EINTER, so just attempt to read a few
+ -- times.
+
+ for J in 1 .. 3 loop
+ N := Read (Descriptors (D).Output_Fd,
+ Buffer'Address, Buffer_Size);
+
+ exit when N > 0;
+ end loop;
-- Error or End of file
if N <= 0 then
- -- ??? Note that ddd tries again up to three times
- -- in that case. See LiterateA.C:174
-
Close (Descriptors (D).Input_Fd);
Descriptors (D).Input_Fd := Invalid_FD;
Result := Expect_Process_Died;
diff --git a/gcc/ada/libgnat/s-bitfie.ads b/gcc/ada/libgnat/s-bitfie.ads
new file mode 100644
index 0000000..1b62b9d
--- /dev/null
+++ b/gcc/ada/libgnat/s-bitfie.ads
@@ -0,0 +1,56 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME COMPONENTS --
+-- --
+-- S Y S T E M . B I T F I E L D _ U T I L S --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2019, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception under Section 7 of GPL version 3, you are granted --
+-- additional permissions described in the GCC Runtime Library Exception, --
+-- version 3.1, as published by the Free Software Foundation. --
+-- --
+-- You should have received a copy of the GNU General Public License and --
+-- a copy of the GCC Runtime Library Exception along with this program; --
+-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
+-- <http://www.gnu.org/licenses/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+with System.Bitfield_Utils;
+
+package System.Bitfields is
+
+ -- Instances of the generic package in System.Bitfield_Utils. So far
+ -- we have just one, which defaults to the natural endianness of the
+ -- machine. We might someday want to support Scalar_Storage_Order.
+
+ Val_Bytes : constant := 4;
+ Val_Bits : constant := Val_Bytes * System.Storage_Unit;
+ type Val_2 is mod 2**(Val_Bits * 2) with Alignment => Val_Bytes;
+ pragma Provide_Shift_Operators (Val_2);
+ type Val is mod 2**Val_Bits with Alignment => Val_Bytes;
+
+ package Utils is new System.Bitfield_Utils.G (Val, Val_2);
+
+ procedure Copy_Bitfield
+ (Src_Address : Address;
+ Src_Offset : Utils.Bit_Offset_In_Byte;
+ Dest_Address : Address;
+ Dest_Offset : Utils.Bit_Offset_In_Byte;
+ Size : Utils.Bit_Size)
+ renames Utils.Copy_Bitfield;
+
+end System.Bitfields;
diff --git a/gcc/ada/libgnat/s-bituti.adb b/gcc/ada/libgnat/s-bituti.adb
new file mode 100644
index 0000000..78e391b
--- /dev/null
+++ b/gcc/ada/libgnat/s-bituti.adb
@@ -0,0 +1,320 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME COMPONENTS --
+-- --
+-- S Y S T E M . B I T F I E L D _ U T I L S --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2019, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception under Section 7 of GPL version 3, you are granted --
+-- additional permissions described in the GCC Runtime Library Exception, --
+-- version 3.1, as published by the Free Software Foundation. --
+-- --
+-- You should have received a copy of the GNU General Public License and --
+-- a copy of the GCC Runtime Library Exception along with this program; --
+-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
+-- <http://www.gnu.org/licenses/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+package body System.Bitfield_Utils is
+
+ -- ???
+ --
+ -- This code does not yet work for overlapping bit fields. We need to copy
+ -- backwards in some cases (i.e. from higher to lower bit addresses).
+ -- Alternatively, we could avoid calling this if Forwards_OK is False.
+ --
+ -- ???
+
+ package body G is
+
+ Val_Bytes : constant Address := Address (Val'Size / Storage_Unit);
+
+ -- Get_Bitfield and Set_Bitfield are helper functions that get/set small
+ -- bit fields -- the value fits in Val, and the bit field is placed
+ -- starting at some offset within the first half of a Val_2.
+ -- Copy_Bitfield, on the other hand, supports arbitrarily large bit
+ -- fields. All operations require bit offsets to point within the first
+ -- Val pointed to by the address.
+
+ function Get_Bitfield
+ (Src : Val_2; Src_Offset : Bit_Offset; Size : Small_Size)
+ return Val;
+ -- Returns the bit field in Src starting at Src_Offset, of the given
+ -- Size. If Size < Small_Size'Last, then high order bits are zero.
+
+ function Get_Full_Bitfield
+ (Src : Val_2; Src_Offset : Bit_Offset) return Val;
+ -- Same as Get_Bitfield, except the Size is hardwired to the maximum
+ -- allowed.
+
+ function Set_Bitfield
+ (Src_Value : Val;
+ Dest : Val_2;
+ Dest_Offset : Bit_Offset;
+ Size : Small_Size)
+ return Val_2;
+ -- The bit field in Dest starting at Dest_Offset, of the given Size, is
+ -- set to Src_Value. Src_Value must have high order bits (Size and
+ -- above) zero. The result is returned as the function result.
+
+ function Get_Bitfield
+ (Src : Val_2; Src_Offset : Bit_Offset; Size : Small_Size)
+ return Val
+ is
+ L_Shift_Amount : constant Natural :=
+ (case Endian is
+ when Little => Val_2'Size - (Src_Offset + Size),
+ when Big => Src_Offset);
+ Temp1 : constant Val_2 :=
+ Shift_Left (Src, L_Shift_Amount);
+ Temp2 : constant Val_2 :=
+ Shift_Right (Temp1, Val_2'Size - Size);
+ begin
+ return Val (Temp2);
+ end Get_Bitfield;
+
+ function Get_Full_Bitfield
+ (Src : Val_2; Src_Offset : Bit_Offset) return Val is
+ begin
+ return Get_Bitfield (Src, Src_Offset, Size => Val'Size);
+ end Get_Full_Bitfield;
+
+ function Set_Bitfield
+ (Src_Value : Val;
+ Dest : Val_2;
+ Dest_Offset : Bit_Offset;
+ Size : Small_Size)
+ return Val_2
+ is
+ pragma Assert (Size = Val'Size or else Src_Value < 2**Size);
+ L_Shift_Amount : constant Natural :=
+ (case Endian is
+ when Little => Dest_Offset,
+ when Big => Val_2'Size - (Dest_Offset + Size));
+ Mask : constant Val_2 :=
+ Shift_Left (Shift_Left (1, Size) - 1, L_Shift_Amount);
+ Temp1 : constant Val_2 := Dest and not Mask;
+ Temp2 : constant Val_2 :=
+ Shift_Left (Val_2 (Src_Value), L_Shift_Amount);
+ Result : constant Val_2 := Temp1 or Temp2;
+ begin
+ return Result;
+ end Set_Bitfield;
+
+ procedure Copy_Small_Bitfield
+ (Src_Address : Address;
+ Src_Offset : Bit_Offset;
+ Dest_Address : Address;
+ Dest_Offset : Bit_Offset;
+ Size : Small_Size);
+ -- Copy_Bitfield in the case where Size <= Val'Size.
+ -- The Address values must be aligned as for Val and Val_2.
+ -- This works for overlapping bit fields.
+
+ procedure Copy_Large_Bitfield
+ (Src_Address : Address;
+ Src_Offset : Bit_Offset;
+ Dest_Address : Address;
+ Dest_Offset : Bit_Offset;
+ Size : Bit_Size);
+ -- Copy_Bitfield in the case where Size > Val'Size.
+ -- The Address values must be aligned as for Val and Val_2.
+ -- This works for overlapping bit fields only if the source
+ -- bit address is greater than or equal to the destination
+ -- bit address, because it copies forward (from lower to higher
+ -- bit addresses).
+
+ procedure Copy_Small_Bitfield
+ (Src_Address : Address;
+ Src_Offset : Bit_Offset;
+ Dest_Address : Address;
+ Dest_Offset : Bit_Offset;
+ Size : Small_Size)
+ is
+ Src : constant Val_2 with Import, Address => Src_Address;
+ V : constant Val := Get_Bitfield (Src, Src_Offset, Size);
+ Dest : Val_2 with Import, Address => Dest_Address;
+ begin
+ Dest := Set_Bitfield (V, Dest, Dest_Offset, Size);
+ end Copy_Small_Bitfield;
+
+ -- Copy_Large_Bitfield does the main work. Copying aligned Vals is more
+ -- efficient than fiddling with shifting and whatnot. But we can't align
+ -- both source and destination. We choose to align the destination,
+ -- because that's more efficient -- Set_Bitfield needs to read, then
+ -- modify, then write, whereas Get_Bitfield does not.
+ --
+ -- So the method is:
+ --
+ -- Step 1:
+ -- If the destination is not already aligned, copy Initial_Size
+ -- bits, and increment the bit addresses. Initial_Size is chosen to
+ -- be the smallest size that will cause the destination bit address
+ -- to be aligned (i.e. have zero bit offset from the already-aligned
+ -- Address). Get_Bitfield and Set_Bitfield are used here.
+ --
+ -- Step 2:
+ -- Loop, copying Vals. Get_Full_Bitfield is used to fetch a
+ -- Val-sized bit field, but Set_Bitfield is not needed -- we can set
+ -- the aligned Val with an array indexing.
+ --
+ -- Step 3:
+ -- Copy remaining smaller-than-Val bits, if any
+
+ procedure Copy_Large_Bitfield
+ (Src_Address : Address;
+ Src_Offset : Bit_Offset;
+ Dest_Address : Address;
+ Dest_Offset : Bit_Offset;
+ Size : Bit_Size)
+ is
+ Sz : Bit_Size := Size;
+ S_Addr : Address := Src_Address;
+ S_Off : Bit_Offset := Src_Offset;
+ D_Addr : Address := Dest_Address;
+ D_Off : Bit_Offset := Dest_Offset;
+ begin
+ if S_Addr < D_Addr or else (S_Addr = D_Addr and then S_Off < D_Off)
+ then
+ -- Here, the source bit address is less than the destination bit
+ -- address. Assert that there is no overlap.
+
+ declare
+ Temp_Off : constant Bit_Offset'Base := S_Off + Size;
+ After_S_Addr : constant Address :=
+ S_Addr + Address (Temp_Off / Storage_Unit);
+ After_S_Off : constant Bit_Offset_In_Byte :=
+ Temp_Off mod Storage_Unit;
+ -- (After_S_Addr, After_S_Off) is the bit address of the bit
+ -- just after the source bit field. Assert that it's less than
+ -- or equal to the destination bit address.
+ Overlap_OK : constant Boolean :=
+ After_S_Addr < D_Addr
+ or else
+ (After_S_Addr = D_Addr and then After_S_Off <= D_Off);
+ begin
+ pragma Assert (Overlap_OK);
+ end;
+ end if;
+
+ if D_Off /= 0 then
+ -- Step 1:
+
+ declare
+ Initial_Size : constant Small_Size := Val'Size - D_Off;
+ Initial_Val_2 : constant Val_2 with Import, Address => S_Addr;
+ Initial_Val : constant Val :=
+ Get_Bitfield (Initial_Val_2, S_Off, Initial_Size);
+ Initial_Dest : Val_2 with Import, Address => D_Addr;
+ begin
+ Initial_Dest := Set_Bitfield
+ (Initial_Val, Initial_Dest, D_Off, Initial_Size);
+
+ Sz := Sz - Initial_Size;
+ declare
+ New_S_Off : constant Bit_Offset'Base := S_Off + Initial_Size;
+ begin
+ if New_S_Off > Bit_Offset'Last then
+ S_Addr := S_Addr + Val_Bytes;
+ S_Off := New_S_Off - Small_Size'Last;
+ else
+ S_Off := New_S_Off;
+ end if;
+ end;
+ D_Addr := D_Addr + Val_Bytes;
+ pragma Assert (D_Off + Initial_Size = Val'Size);
+ D_Off := 0;
+ end;
+ end if;
+
+ -- Step 2:
+
+ declare
+ Dest_Arr : Val_Array (1 .. Sz / Val'Size) with Import,
+ Address => D_Addr;
+ begin
+ for Dest_Comp of Dest_Arr loop
+ declare
+ pragma Warnings (Off);
+ pragma Assert (Dest_Comp in Val);
+ pragma Warnings (On);
+ pragma Assert (Dest_Comp'Valid);
+ Src_V_2 : constant Val_2 with Import, Address => S_Addr;
+ Full_V : constant Val := Get_Full_Bitfield (Src_V_2, S_Off);
+ begin
+ Dest_Comp := Full_V;
+ S_Addr := S_Addr + Val_Bytes;
+ -- S_Off remains the same
+ end;
+ end loop;
+
+ if Sz mod Val'Size /= 0 then
+ -- Step 3:
+
+ declare
+ Final_Val_2 : constant Val_2 with Import, Address => S_Addr;
+ Final_Val : constant Val :=
+ Get_Bitfield (Final_Val_2, S_Off, Sz mod Val'Size);
+ Final_Dest : Val_2 with Import,
+ Address => D_Addr + Dest_Arr'Length * Val_Bytes;
+ begin
+ Final_Dest := Set_Bitfield
+ (Final_Val, Final_Dest, 0, Sz mod Val'Size);
+ end;
+ end if;
+ end;
+ end Copy_Large_Bitfield;
+
+ procedure Copy_Bitfield
+ (Src_Address : Address;
+ Src_Offset : Bit_Offset_In_Byte;
+ Dest_Address : Address;
+ Dest_Offset : Bit_Offset_In_Byte;
+ Size : Bit_Size)
+ is
+ -- Align the Address values as for Val and Val_2, and adjust the
+ -- Bit_Offsets accordingly.
+
+ Src_Adjust : constant Address := Src_Address mod Val_Bytes;
+ Al_Src_Address : constant Address := Src_Address - Src_Adjust;
+ Al_Src_Offset : constant Bit_Offset :=
+ Src_Offset + Bit_Offset (Src_Adjust * Storage_Unit);
+
+ Dest_Adjust : constant Address := Dest_Address mod Val_Bytes;
+ Al_Dest_Address : constant Address := Dest_Address - Dest_Adjust;
+ Al_Dest_Offset : constant Bit_Offset :=
+ Dest_Offset + Bit_Offset (Dest_Adjust * Storage_Unit);
+
+ pragma Assert (Al_Src_Address mod Val'Alignment = 0);
+ pragma Assert (Al_Dest_Address mod Val'Alignment = 0);
+ begin
+ if Size in Small_Size then
+ Copy_Small_Bitfield
+ (Al_Src_Address, Al_Src_Offset,
+ Al_Dest_Address, Al_Dest_Offset,
+ Size);
+ else
+ Copy_Large_Bitfield
+ (Al_Src_Address, Al_Src_Offset,
+ Al_Dest_Address, Al_Dest_Offset,
+ Size);
+ end if;
+ end Copy_Bitfield;
+
+ end G;
+
+end System.Bitfield_Utils;
diff --git a/gcc/ada/libgnat/s-bituti.ads b/gcc/ada/libgnat/s-bituti.ads
new file mode 100644
index 0000000..1e446c1
--- /dev/null
+++ b/gcc/ada/libgnat/s-bituti.ads
@@ -0,0 +1,132 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME COMPONENTS --
+-- --
+-- S Y S T E M . B I T F I E L D _ U T I L S --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2019, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception under Section 7 of GPL version 3, you are granted --
+-- additional permissions described in the GCC Runtime Library Exception, --
+-- version 3.1, as published by the Free Software Foundation. --
+-- --
+-- You should have received a copy of the GNU General Public License and --
+-- a copy of the GCC Runtime Library Exception along with this program; --
+-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
+-- <http://www.gnu.org/licenses/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+package System.Bitfield_Utils is
+
+ -- This package provides a procedure for copying arbitrarily large and
+ -- arbitrarily bit-aligned bit fields.
+
+ -- Type Val is used to represent small bit fields. Val_2 represents a
+ -- contiguous pair of Vals. Val_2'Alignment is half of its size in bytes,
+ -- which is likely not the natural alignment. This is done to ensure that
+ -- any bit field that fits in a Val can fit in an aligned Val_2, starting
+ -- somewhere in the first half, and possibly crossing over into the second
+ -- half. This allows us to isolate a Val value by shifting and masking the
+ -- Val_2.
+ --
+ -- Val can be 8, 16, or 32 bits; larger values are more efficient. It can't
+ -- be 64 bits, because we need Val_2 to be a double-wide shiftable type,
+ -- and 128 bits is not supported. Instantiating with an 8-bit Val is useful
+ -- for testing and debugging; 32 bits should be used for production.
+ --
+ -- We use modular types here, not because we want modular arithmetic, but
+ -- so we can do shifting and masking. The actual for Val_2 should have
+ -- pragma Provide_Shift_Operators, so that the Shift_Left and Shift_Right
+ -- intrinsics can be passed in. It is impossible to put that pragma on a
+ -- generic formal, or on a type derived from a generic formal, so they have
+ -- to be passed in.
+ --
+ -- Endian indicates whether we're on little-endian or big-endian machine.
+
+ pragma Elaborate_Body;
+
+ Little : constant Bit_Order := Low_Order_First;
+ Big : constant Bit_Order := High_Order_First;
+
+ generic
+ type Val is mod <>;
+ type Val_2 is mod <>;
+
+ with function Shift_Left
+ (Value : Val_2;
+ Amount : Natural) return Val_2 is <>;
+
+ with function Shift_Right
+ (Value : Val_2;
+ Amount : Natural) return Val_2 is <>;
+
+ Endian : Bit_Order := Default_Bit_Order;
+
+ package G is
+ -- Assert that Val has one of the allowed sizes, and that Val_2 is twice
+ -- that.
+
+ pragma Assert (Val'Size in 8 | 16 | 32);
+ pragma Assert (Val_2'Size = Val'Size * 2);
+
+ -- Assert that both are aligned the same, to the size in bytes of Val
+ -- (not Val_2).
+
+ pragma Assert (Val'Alignment = Val'Size / Storage_Unit);
+ pragma Assert (Val_2'Alignment = Val'Alignment);
+
+ type Val_Array is array (Positive range <>) of Val;
+
+ -- It might make more sense to have:
+ -- subtype Val is Val_2 range 0 .. 2**Val'Size - 1;
+ -- But then GNAT gets the component size of Val_Array wrong.
+
+ pragma Assert (Val_Array'Alignment = Val'Alignment);
+ pragma Assert (Val_Array'Component_Size = Val'Size);
+
+ subtype Bit_Size is Natural; -- Size in bits of a bit field
+ subtype Small_Size is Bit_Size range 0 .. Val'Size;
+ -- Size of a small one
+ subtype Bit_Offset is Small_Size range 0 .. Val'Size - 1;
+ -- Starting offset
+ subtype Bit_Offset_In_Byte is Bit_Offset range 0 .. Storage_Unit - 1;
+
+ procedure Copy_Bitfield
+ (Src_Address : Address;
+ Src_Offset : Bit_Offset_In_Byte;
+ Dest_Address : Address;
+ Dest_Offset : Bit_Offset_In_Byte;
+ Size : Bit_Size);
+ -- An Address and a Bit_Offset together form a "bit address". This
+ -- copies the source bit field to the destination. Size is the size in
+ -- bits of the bit field. The bit fields can be arbitrarily large, but
+ -- the starting offsets must be within the first byte that the Addresses
+ -- point to. The Address values need not be aligned.
+ --
+ -- For example, a slice assignment of a packed bit field:
+ --
+ -- D (D_First .. D_Last) := S (S_First .. S_Last);
+ --
+ -- can be implemented using:
+ --
+ -- Copy_Bitfield
+ -- (S (S_First)'Address, S (S_First)'Bit,
+ -- D (D_First)'Address, D (D_First)'Bit,
+ -- Size);
+
+ end G;
+
+end System.Bitfield_Utils;
diff --git a/gcc/ada/libgnat/s-soflin.ads b/gcc/ada/libgnat/s-soflin.ads
index ff095b6..2125d59 100644
--- a/gcc/ada/libgnat/s-soflin.ads
+++ b/gcc/ada/libgnat/s-soflin.ads
@@ -302,15 +302,16 @@ package System.Soft_Links is
-- Wrapper to the possible user specified traceback decorator to be
-- called during automatic output of exception data.
- -- The null value of this wrapper correspond sto the null value of the
+ -- The null value of this wrapper corresponds to the null value of the
-- current actual decorator. This is ensured first by the null initial
-- value of the corresponding variables, and then by Set_Trace_Decorator
-- in g-exctra.adb.
pragma Atomic (Traceback_Decorator_Wrapper);
-- Since concurrent read/write operations may occur on this variable.
- -- See the body of Tailored_Exception_Traceback in Ada.Exceptions for
- -- a more detailed description of the potential problems.
+ -- See the body of Tailored_Exception_Traceback in
+ -- Ada.Exceptions.Exception_Data for a more detailed description of the
+ -- potential problems.
procedure Save_Library_Occurrence (E : EOA);
-- When invoked, this routine saves an exception occurrence into a hidden
diff --git a/gcc/ada/opt.ads b/gcc/ada/opt.ads
index 3158899..a07db75 100644
--- a/gcc/ada/opt.ads
+++ b/gcc/ada/opt.ads
@@ -191,6 +191,11 @@ package Opt is
-- GNAT, GNATBIND
-- Set True if package System has the line "type Address is private;"
+ Aggregate_Individually_Assign : Boolean := False;
+ -- GNAT
+ -- Set True if record aggregates are to be always converted into assignment
+ -- statements. Set through the corresponding pragma.
+
All_Errors_Mode : Boolean := False;
-- GNAT
-- Flag set to force display of multiple errors on a single line and
@@ -1944,10 +1949,6 @@ package Opt is
-- which requires pragma Warnings to be stored for the formal verification
-- backend.
- Warnings_As_Errors_Count : Natural;
- -- GNAT
- -- Number of entries stored in Warnings_As_Errors table
-
Wide_Character_Encoding_Method : WC_Encoding_Method := WCEM_Brackets;
-- GNAT, GNATBIND
-- Method used for encoding wide characters in the source program. See
@@ -2158,10 +2159,6 @@ package Opt is
-- is ignored for internal and predefined units (which are always compiled
-- with the standard Size semantics).
- Warnings_As_Errors_Count_Config : Natural;
- -- GNAT
- -- Count of pattern strings stored from Warning_As_Error pragmas
-
type Config_Switches_Type is private;
-- Type used to save values of the switches set from Config values
@@ -2268,16 +2265,24 @@ package Opt is
---------------------------
-- The following array would more reasonably be located in Err_Vars or
- -- Errour, but we put them here to deal with licensing issues (we need
+ -- Errout, but we put them here to deal with licensing issues (we need
-- this to have the GPL exception licensing, since these variables and
-- subprograms are accessed from units with this licensing).
Warnings_As_Errors : array (1 .. 10_000) of String_Ptr;
- -- Table for recording Warning_As_Error pragmas as they are processed.
- -- It would be nicer to use Table, but there are circular elaboration
- -- problems if we try to do this, and an attempt to find some other
- -- appropriately licensed unit to declare this as a Table failed with
- -- various elaboration circularities. Memory is getting cheap these days!
+ -- Table for recording Warning_As_Error pragmas as they are processed. It
+ -- would be nicer to use Table, but there are circular elaboration problems
+ -- if we try to do this, and an attempt to find some other appropriately
+ -- licensed unit to declare this as a Table failed with various elaboration
+ -- circularities.
+
+ Warnings_As_Errors_Count : Natural;
+ -- GNAT
+ -- Number of entries stored in Warnings_As_Errors table
+
+ Warnings_As_Errors_Count_Config : Natural;
+ -- GNAT
+ -- Count of pattern strings stored from Warning_As_Error pragmas
---------------
-- GNAT_Mode --
diff --git a/gcc/ada/par-ch4.adb b/gcc/ada/par-ch4.adb
index b9b0214..986d128 100644
--- a/gcc/ada/par-ch4.adb
+++ b/gcc/ada/par-ch4.adb
@@ -2850,7 +2850,7 @@ package body Ch4 is
when Tok_At_Sign => -- AI12-0125 : target_name
if Ada_Version < Ada_2020 then
- Error_Msg_SC ("target name is an Ada 2020 extension");
+ Error_Msg_SC ("target name is an Ada 202x feature");
Error_Msg_SC ("\compile with -gnatX");
end if;
@@ -3325,7 +3325,7 @@ package body Ch4 is
Set_Expression (Assoc_Node, P_Expression);
if Ada_Version < Ada_2020 then
- Error_Msg_SC ("iterated component is an Ada 2020 extension");
+ Error_Msg_SC ("iterated component is an Ada 202x feature");
Error_Msg_SC ("\compile with -gnatX");
end if;
diff --git a/gcc/ada/par-prag.adb b/gcc/ada/par-prag.adb
index bed22e1..65ee035 100644
--- a/gcc/ada/par-prag.adb
+++ b/gcc/ada/par-prag.adb
@@ -1088,6 +1088,21 @@ begin
when Pragma_Suppress_All =>
Set_Has_Pragma_Suppress_All (Cunit (Current_Source_Unit));
+ ----------------------
+ -- Warning_As_Error --
+ ----------------------
+
+ -- pragma Warning_As_Error (static_string_EXPRESSION);
+
+ -- Further processing is done in Sem_Prag
+
+ when Pragma_Warning_As_Error =>
+ Check_Arg_Count (1);
+ Check_Arg_Is_String_Literal (Arg1);
+ Warnings_As_Errors_Count := Warnings_As_Errors_Count + 1;
+ Warnings_As_Errors (Warnings_As_Errors_Count) :=
+ new String'(Acquire_Warning_Match_String (Get_Pragma_Arg (Arg1)));
+
---------------------
-- Warnings (GNAT) --
---------------------
@@ -1304,6 +1319,7 @@ begin
| Pragma_Acc_Kernels
| Pragma_Acc_Loop
| Pragma_Acc_Parallel
+ | Pragma_Aggregate_Individually_Assign
| Pragma_Async_Readers
| Pragma_Async_Writers
| Pragma_Assertion_Policy
@@ -1519,7 +1535,6 @@ begin
| Pragma_Volatile_Components
| Pragma_Volatile_Full_Access
| Pragma_Volatile_Function
- | Pragma_Warning_As_Error
| Pragma_Weak_External
| Pragma_Validity_Checks
=>
diff --git a/gcc/ada/par_sco.adb b/gcc/ada/par_sco.adb
index 4a7c286..0fe248c 100644
--- a/gcc/ada/par_sco.adb
+++ b/gcc/ada/par_sco.adb
@@ -92,8 +92,8 @@ package body Par_SCO is
-- writing out the SCO information to the ALI file, we can fill in the
-- proper dependency numbers and file names.
- -- Note that the zero'th entry is here for convenience in sorting the
- -- table, the real lower bound is 1.
+ -- Note that the zeroth entry is here for convenience in sorting the table;
+ -- the real lower bound is 1.
package SCO_Unit_Number_Table is new Table.Table
(Table_Component_Type => Unit_Number_Type,
diff --git a/gcc/ada/repinfo.adb b/gcc/ada/repinfo.adb
index 6f531b2..219fa3b 100644
--- a/gcc/ada/repinfo.adb
+++ b/gcc/ada/repinfo.adb
@@ -357,6 +357,14 @@ package body Repinfo is
Write_Eol;
Write_Line ("}");
end if;
+
+ -- The component type is relevant for an array
+
+ if List_Representation_Info = 4
+ and then Is_Itype (Component_Type (Base_Type (Ent)))
+ then
+ Relevant_Entities.Set (Component_Type (Base_Type (Ent)), True);
+ end if;
end List_Array_Info;
---------------------------
@@ -539,20 +547,17 @@ package body Repinfo is
List_Record_Info (E, Bytes_Big_Endian);
end if;
+ -- Recurse into entities local to a record type
+
+ if List_Representation_Info = 4 then
+ List_Entities (E, Bytes_Big_Endian, False);
+ end if;
+
elsif Is_Array_Type (E) then
if List_Representation_Info >= 1 then
List_Array_Info (E, Bytes_Big_Endian);
end if;
- -- The component type is relevant for an array
-
- if List_Representation_Info = 4
- and then Is_Itype (Component_Type (Base_Type (E)))
- then
- Relevant_Entities.Set
- (Component_Type (Base_Type (E)), True);
- end if;
-
elsif Is_Type (E) then
if List_Representation_Info >= 2 then
List_Type_Info (E);
@@ -564,13 +569,6 @@ package body Repinfo is
E_Loop_Parameter,
E_Variable)
then
- -- The type is relevant for an object
-
- if List_Representation_Info = 4 and then Is_Itype (Etype (E))
- then
- Relevant_Entities.Set (Etype (E), True);
- end if;
-
if List_Representation_Info >= 2 then
List_Object_Info (E);
end if;
@@ -975,6 +973,12 @@ package body Repinfo is
List_Linker_Section (Ent);
end if;
+
+ -- The type is relevant for an object
+
+ if List_Representation_Info = 4 and then Is_Itype (Etype (Ent)) then
+ Relevant_Entities.Set (Etype (Ent), True);
+ end if;
end List_Object_Info;
----------------------
@@ -1283,6 +1287,12 @@ package body Repinfo is
else
Write_Line (";");
end if;
+
+ -- The type is relevant for a component
+
+ if List_Representation_Info = 4 and then Is_Itype (Etype (Ent)) then
+ Relevant_Entities.Set (Etype (Ent), True);
+ end if;
end List_Component_Layout;
------------------------
@@ -1681,6 +1691,15 @@ package body Repinfo is
Write_Eol;
Write_Line ("}");
end if;
+
+ -- The type is relevant for a record subtype
+
+ if List_Representation_Info = 4
+ and then not Is_Base_Type (Ent)
+ and then Is_Itype (Etype (Ent))
+ then
+ Relevant_Entities.Set (Etype (Ent), True);
+ end if;
end List_Record_Info;
-------------------
@@ -1809,8 +1828,8 @@ package body Repinfo is
Has_Rep_Item (Ent, Name_Scalar_Storage_Order)
or else SSO_Set_Low_By_Default (Ent)
or else SSO_Set_High_By_Default (Ent);
- -- Scalar_Storage_Order is displayed if specified explicitly
- -- or set by Default_Scalar_Storage_Order.
+ -- Scalar_Storage_Order is displayed if specified explicitly or set by
+ -- Default_Scalar_Storage_Order.
-- Start of processing for List_Scalar_Storage_Order
diff --git a/gcc/ada/rtsfind.ads b/gcc/ada/rtsfind.ads
index eab6f4f..9d5a86c 100644
--- a/gcc/ada/rtsfind.ads
+++ b/gcc/ada/rtsfind.ads
@@ -220,6 +220,7 @@ package Rtsfind is
System_Atomic_Primitives,
System_Aux_DEC,
System_Bignums,
+ System_Bitfields,
System_Bit_Ops,
System_Boolean_Array_Operations,
System_Byte_Swapping,
@@ -809,6 +810,8 @@ package Rtsfind is
RE_To_Bignum, -- System.Bignums
RE_From_Bignum, -- System.Bignums
+ RE_Copy_Bitfield, -- System.Bitfields
+
RE_Bit_And, -- System.Bit_Ops
RE_Bit_Eq, -- System.Bit_Ops
RE_Bit_Not, -- System.Bit_Ops
@@ -2051,6 +2054,8 @@ package Rtsfind is
RE_To_Bignum => System_Bignums,
RE_From_Bignum => System_Bignums,
+ RE_Copy_Bitfield => System_Bitfields,
+
RE_Bit_And => System_Bit_Ops,
RE_Bit_Eq => System_Bit_Ops,
RE_Bit_Not => System_Bit_Ops,
diff --git a/gcc/ada/sem_aggr.adb b/gcc/ada/sem_aggr.adb
index 7aacc5f..bc80121 100644
--- a/gcc/ada/sem_aggr.adb
+++ b/gcc/ada/sem_aggr.adb
@@ -2799,6 +2799,11 @@ package body Sem_Aggr is
Base : constant Node_Id := Expression (N);
begin
+ if Ada_Version < Ada_2020 then
+ Error_Msg_N ("delta_aggregate is an Ada 202x feature", N);
+ Error_Msg_N ("\compile with -gnatX", N);
+ end if;
+
if not Is_Composite_Type (Typ) then
Error_Msg_N ("not a composite type", N);
end if;
diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb
index a3a7be7..2538c1d 100644
--- a/gcc/ada/sem_ch13.adb
+++ b/gcc/ada/sem_ch13.adb
@@ -5812,6 +5812,9 @@ package body Sem_Ch13 is
if ASIS_Mode then
null;
+ elsif Size <= 0 then
+ Error_Msg_N ("Object_Size must be positive", Expr);
+
elsif Is_Scalar_Type (U_Ent) then
if Size /= 8 and then Size /= 16 and then Size /= 32
and then UI_Mod (Size, 64) /= 0
@@ -10130,6 +10133,11 @@ package body Sem_Ch13 is
-- recursively to compute After_Last for the parent type; in this case
-- Warn is False and the warnings are suppressed.
+ procedure Component_Order_Check (Rectype : Entity_Id);
+ -- Check that the order of component clauses agrees with the order of
+ -- component declarations, and that the component clauses are given in
+ -- increasing order of bit offset.
+
-----------------------------
-- Check_Component_Overlap --
-----------------------------
@@ -10172,6 +10180,53 @@ package body Sem_Ch13 is
end if;
end Check_Component_Overlap;
+ ---------------------------
+ -- Component_Order_Check --
+ ---------------------------
+
+ procedure Component_Order_Check (Rectype : Entity_Id) is
+ Comp : Entity_Id := First_Component (Rectype);
+ Clause : Node_Id := First (Component_Clauses (N));
+ Prev_Bit_Offset : Uint := Uint_0;
+ OOO : constant String :=
+ "?component clause out of order with respect to declaration";
+
+ begin
+ -- Step Comp through components and Clause through component clauses,
+ -- skipping pragmas. We ignore discriminants and variant parts,
+ -- because we get most of the benefit from the plain vanilla
+ -- component cases, without the extra complexity. If we find a Comp
+ -- and Clause that don't match, give a warning on both and quit. If
+ -- we find two subsequent clauses out of order by bit layout, give
+ -- warning and quit. On each iteration, Prev_Bit_Offset is the one
+ -- from the previous iteration (or 0 to start).
+
+ while Present (Comp) and then Present (Clause) loop
+ if Nkind (Clause) = N_Component_Clause
+ and then Ekind (Entity (Component_Name (Clause))) = E_Component
+ then
+ if Entity (Component_Name (Clause)) /= Comp then
+ Error_Msg_N (OOO, Comp);
+ Error_Msg_N (OOO, Clause);
+ exit;
+ end if;
+
+ if not Reverse_Bit_Order (Rectype)
+ and then not Reverse_Storage_Order (Rectype)
+ and then Component_Bit_Offset (Comp) < Prev_Bit_Offset
+ then
+ Error_Msg_N ("?memory layout out of order", Clause);
+ exit;
+ end if;
+
+ Prev_Bit_Offset := Component_Bit_Offset (Comp);
+ Comp := Next_Component (Comp);
+ end if;
+
+ Next (Clause);
+ end loop;
+ end Component_Order_Check;
+
--------------------
-- Find_Component --
--------------------
@@ -10438,6 +10493,8 @@ package body Sem_Ch13 is
Sbit := Uint_0;
end if;
+ After_Last := Uint_0;
+
if Nkind (Decl) = N_Full_Type_Declaration then
Record_Definition := Type_Definition (Decl);
@@ -10816,16 +10873,25 @@ package body Sem_Ch13 is
end Overlap_Check2;
end if;
- -- Check for record holes (gaps). We skip this check if overlap was
- -- detected, since it makes sense for the programmer to fix this
- -- error before worrying about warnings.
+ -- Skip the following warnings if overlap was detected; programmer
+ -- should fix the errors first.
- if Warn_On_Record_Holes and not Overlap_Detected then
- declare
- Ignore : Uint;
- begin
- Record_Hole_Check (Rectype, After_Last => Ignore, Warn => True);
- end;
+ if not Overlap_Detected then
+ -- Check for record holes (gaps)
+
+ if Warn_On_Record_Holes then
+ declare
+ Ignore : Uint;
+ begin
+ Record_Hole_Check (Rectype, After_Last => Ignore, Warn => True);
+ end;
+ end if;
+
+ -- Check for out-of-order component clauses
+
+ if Warn_On_Component_Order then
+ Component_Order_Check (Rectype);
+ end if;
end if;
-- For records that have component clauses for all components, and whose
@@ -14559,6 +14625,39 @@ package body Sem_Ch13 is
------------------------------------
procedure Validate_Unchecked_Conversions is
+ function Is_Null_Array (T : Entity_Id) return Boolean;
+ -- We want to warn in the case of converting to a wrong-sized array of
+ -- bytes, including the zero-size case. This returns True in that case,
+ -- which is necessary because a size of 0 is used to indicate both an
+ -- unknown size and a size of 0. It's OK for this to return True in
+ -- other zero-size cases, but we don't go out of our way; for example,
+ -- we don't bother with multidimensional arrays.
+
+ function Is_Null_Array (T : Entity_Id) return Boolean is
+ begin
+ if Is_Array_Type (T) and then Is_Constrained (T) then
+ declare
+ Index : constant Node_Id := First_Index (T);
+ R : Node_Id; -- N_Range
+ begin
+ case Nkind (Index) is
+ when N_Range =>
+ R := Index;
+ when N_Subtype_Indication =>
+ R := Range_Expression (Constraint (Index));
+ when N_Identifier | N_Expanded_Name =>
+ R := Scalar_Range (Entity (Index));
+ when others =>
+ raise Program_Error;
+ end case;
+
+ return Is_Null_Range (Low_Bound (R), High_Bound (R));
+ end;
+ end if;
+
+ return False;
+ end Is_Null_Array;
+
begin
for N in Unchecked_Conversions.First .. Unchecked_Conversions.Last loop
declare
@@ -14575,28 +14674,28 @@ package body Sem_Ch13 is
begin
-- Skip if function marked as warnings off
- if Warnings_Off (Act_Unit) then
+ if Warnings_Off (Act_Unit) or else Serious_Errors_Detected > 0 then
goto Continue;
end if;
- -- This validation check, which warns if we have unequal sizes for
- -- unchecked conversion, and thus potentially implementation
- -- dependent semantics, is one of the few occasions on which we
- -- use the official RM size instead of Esize. See description in
- -- Einfo "Handling of Type'Size Values" for details.
-
- if Serious_Errors_Detected = 0
- and then Known_Static_RM_Size (Source)
- and then Known_Static_RM_Size (Target)
+ -- Don't do the check if warnings off for either type, note the
+ -- deliberate use of OR here instead of OR ELSE to get the flag
+ -- Warnings_Off_Used set for both types if appropriate.
- -- Don't do the check if warnings off for either type, note the
- -- deliberate use of OR here instead of OR ELSE to get the flag
- -- Warnings_Off_Used set for both types if appropriate.
+ if Has_Warnings_Off (Source) or Has_Warnings_Off (Target) then
+ goto Continue;
+ end if;
- and then not (Has_Warnings_Off (Source)
- or
- Has_Warnings_Off (Target))
+ if (Known_Static_RM_Size (Source)
+ and then Known_Static_RM_Size (Target))
+ or else Is_Null_Array (Target)
then
+ -- This validation check, which warns if we have unequal sizes
+ -- for unchecked conversion, and thus implementation dependent
+ -- semantics, is one of the few occasions on which we use the
+ -- official RM size instead of Esize. See description in Einfo
+ -- "Handling of Type'Size Values" for details.
+
Source_Siz := RM_Size (Source);
Target_Siz := RM_Size (Target);
diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb
index 1b4c42d..6af9419 100644
--- a/gcc/ada/sem_ch3.adb
+++ b/gcc/ada/sem_ch3.adb
@@ -3923,6 +3923,7 @@ package body Sem_Ch3 is
-- Save the Ghost-related attributes to restore on exit
Related_Id : Entity_Id;
+ Full_View_Present : Boolean := False;
-- Start of processing for Analyze_Object_Declaration
@@ -4645,10 +4646,25 @@ package body Sem_Ch3 is
Act_T := Find_Type_Of_Object (Object_Definition (N), N);
end if;
+ -- Propagate attributes to full view when needed.
+
Set_Is_Constr_Subt_For_U_Nominal (Act_T);
+ if Is_Private_Type (Act_T) and then Present (Full_View (Act_T))
+ then
+ Full_View_Present := True;
+ end if;
+
+ if Full_View_Present then
+ Set_Is_Constr_Subt_For_U_Nominal (Full_View (Act_T));
+ end if;
+
if Aliased_Present (N) then
Set_Is_Constr_Subt_For_UN_Aliased (Act_T);
+
+ if Full_View_Present then
+ Set_Is_Constr_Subt_For_UN_Aliased (Full_View (Act_T));
+ end if;
end if;
Freeze_Before (N, Act_T);
@@ -5539,6 +5555,14 @@ package body Sem_Ch3 is
=>
Set_Ekind (Id, E_Record_Subtype);
+ -- Subtype declarations introduced for formal type parameters
+ -- in generic instantiations should inherit the Size value of
+ -- the type they rename.
+
+ if Present (Generic_Parent_Type (N)) then
+ Set_RM_Size (Id, RM_Size (T));
+ end if;
+
if Ekind (T) = E_Record_Subtype
and then Present (Cloned_Subtype (T))
then
@@ -8794,7 +8818,7 @@ package body Sem_Ch3 is
-- Indic can either be an N_Identifier if the subtype indication
-- contains no constraint or an N_Subtype_Indication if the subtype
- -- indecation has a constraint. In either case it can include an
+ -- indication has a constraint. In either case it can include an
-- interface list.
Indic := Subtype_Indication (Type_Def);
@@ -11870,10 +11894,14 @@ package body Sem_Ch3 is
else
-- Specialize error message according to kind of illegal
- -- initial expression.
+ -- initial expression. We check the Original_Node to cover
+ -- cases where the initialization expression of an object
+ -- declaration generated by the compiler has been rewritten
+ -- (such as for dispatching calls).
- if Nkind (Exp) = N_Type_Conversion
- and then Nkind (Expression (Exp)) = N_Function_Call
+ if Nkind (Original_Node (Exp)) = N_Type_Conversion
+ and then
+ Nkind (Expression (Original_Node (Exp))) = N_Function_Call
then
-- No error for internally-generated object declarations,
-- which can come from build-in-place assignment statements.
@@ -19648,8 +19676,20 @@ package body Sem_Ch3 is
=>
return not Comes_From_Source (Exp)
and then
- OK_For_Limited_Init_In_05
- (Typ, Expression (Original_Node (Exp)));
+ -- If the conversion has been rewritten, check Original_Node
+
+ ((Original_Node (Exp) /= Exp
+ and then
+ OK_For_Limited_Init_In_05 (Typ, Original_Node (Exp)))
+
+ -- Otherwise, check the expression of the compiler-generated
+ -- conversion (which is a conversion that we want to ignore
+ -- for purposes of the limited-initialization restrictions).
+
+ or else
+ (Original_Node (Exp) = Exp
+ and then
+ OK_For_Limited_Init_In_05 (Typ, Expression (Exp))));
when N_Explicit_Dereference
| N_Indexed_Component
diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb
index 16614ed..0dccd33 100644
--- a/gcc/ada/sem_ch4.adb
+++ b/gcc/ada/sem_ch4.adb
@@ -796,25 +796,47 @@ package body Sem_Ch4 is
("\constraint with discriminant values required", N);
end if;
- -- Limited Ada 2005 and general nonlimited case
+ -- Limited Ada 2005 and general nonlimited case.
+ -- This is an error, except in the case of an
+ -- uninitialized allocator that is generated
+ -- for a build-in-place function return of a
+ -- discriminated but compile-time-known-size
+ -- type.
else
- Error_Msg_N
- ("uninitialized unconstrained allocation not "
- & "allowed", N);
+ if Original_Node (N) /= N
+ and then Nkind (Original_Node (N)) = N_Allocator
+ then
+ declare
+ Qual : constant Node_Id :=
+ Expression (Original_Node (N));
+ pragma Assert
+ (Nkind (Qual) = N_Qualified_Expression);
+ Call : constant Node_Id := Expression (Qual);
+ pragma Assert
+ (Is_Expanded_Build_In_Place_Call (Call));
+ begin
+ null;
+ end;
- if Is_Array_Type (Type_Id) then
+ else
Error_Msg_N
- ("\qualified expression or constraint with "
- & "array bounds required", N);
+ ("uninitialized unconstrained allocation not "
+ & "allowed", N);
- elsif Has_Unknown_Discriminants (Type_Id) then
- Error_Msg_N ("\qualified expression required", N);
+ if Is_Array_Type (Type_Id) then
+ Error_Msg_N
+ ("\qualified expression or constraint with "
+ & "array bounds required", N);
- else pragma Assert (Has_Discriminants (Type_Id));
- Error_Msg_N
- ("\qualified expression or constraint with "
- & "discriminant values required", N);
+ elsif Has_Unknown_Discriminants (Type_Id) then
+ Error_Msg_N ("\qualified expression required", N);
+
+ else pragma Assert (Has_Discriminants (Type_Id));
+ Error_Msg_N
+ ("\qualified expression or constraint with "
+ & "discriminant values required", N);
+ end if;
end if;
end if;
end if;
diff --git a/gcc/ada/sem_ch5.adb b/gcc/ada/sem_ch5.adb
index 963819e..3abaa8d 100644
--- a/gcc/ada/sem_ch5.adb
+++ b/gcc/ada/sem_ch5.adb
@@ -2234,15 +2234,14 @@ package body Sem_Ch5 is
It : Interp;
begin
- -- THe domain of iteralion must implement either the RM
+ -- The domain of iteration must implement either the RM
-- iterator interface, or the SPARK Iterable aspect.
if No (Iterator) then
- if No
- (Find_Aspect (Etype (Iter_Name), Aspect_Iterable))
- then
- Error_Msg_NE ("cannot iterate over&",
- N, Base_Type (Etype (Iter_Name)));
+ if No (Find_Aspect (Etype (Iter_Name), Aspect_Iterable)) then
+ Error_Msg_NE
+ ("cannot iterate over&",
+ N, Base_Type (Etype (Iter_Name)));
return;
end if;
diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb
index 38c3980..a7918da 100644
--- a/gcc/ada/sem_ch8.adb
+++ b/gcc/ada/sem_ch8.adb
@@ -1696,7 +1696,7 @@ package body Sem_Ch8 is
-- AI05-0225: If the renamed entity is a procedure or entry of a
-- protected object, the target object must be a variable.
- if Ekind (Scope (Old_S)) in Protected_Kind
+ if Is_Protected_Type (Scope (Old_S))
and then Ekind (New_S) = E_Procedure
and then not Is_Variable (Prefix (Nam))
then
diff --git a/gcc/ada/sem_ch9.adb b/gcc/ada/sem_ch9.adb
index 0696f92..bc8ab36 100644
--- a/gcc/ada/sem_ch9.adb
+++ b/gcc/ada/sem_ch9.adb
@@ -2350,8 +2350,7 @@ package body Sem_Ch9 is
for S in reverse 0 .. Scope_Stack.Last loop
Req_Scope := Scope_Stack.Table (S).Entity;
- exit when Ekind (Req_Scope) in Task_Kind
- or else Ekind (Req_Scope) in Protected_Kind;
+ exit when Is_Concurrent_Type (Req_Scope);
if Is_Entry (Req_Scope) then
Outer_Ent := Req_Scope;
diff --git a/gcc/ada/sem_disp.adb b/gcc/ada/sem_disp.adb
index ee8f443..b04b863 100644
--- a/gcc/ada/sem_disp.adb
+++ b/gcc/ada/sem_disp.adb
@@ -1144,12 +1144,12 @@ package body Sem_Disp is
-- 3. Subprograms associated with stream attributes (built by
-- New_Stream_Subprogram)
- -- 4. Wrapper built for inherited operations with inherited class-
+ -- 4. Wrappers built for inherited operations with inherited class-
-- wide conditions, where the conditions include calls to other
-- overridden primitives. The wrappers include checks on these
-- modified conditions. (AI12-113).
- -- 5. Declarations built for subprograms without separate spec which
+ -- 5. Declarations built for subprograms without separate specs that
-- are eligible for inlining in GNATprove (inside
-- Sem_Ch6.Analyze_Subprogram_Body_Helper).
diff --git a/gcc/ada/sem_elab.adb b/gcc/ada/sem_elab.adb
index 714a9f7..2dbf54d 100644
--- a/gcc/ada/sem_elab.adb
+++ b/gcc/ada/sem_elab.adb
@@ -15234,8 +15234,8 @@ package body Sem_Elab is
begin
-- Nothing to do for predefined primitives because they are
-- artifacts of tagged type expansion and cannot override source
- -- primitives. Nothing to do as well for inherited primitives as
- -- the check concerns overridding ones.
+ -- primitives. Nothing to do as well for inherited primitives, as
+ -- the check concerns overriding ones.
if Is_Predefined_Dispatching_Operation (Prim)
or else not Is_Overriding_Subprogram (Prim)
diff --git a/gcc/ada/sem_eval.adb b/gcc/ada/sem_eval.adb
index 78740b9..5c41642 100644
--- a/gcc/ada/sem_eval.adb
+++ b/gcc/ada/sem_eval.adb
@@ -562,9 +562,9 @@ package body Sem_Eval is
elsif Is_Out_Of_Range (N, Base_Type (T), Assume_Valid => True) then
Out_Of_Range (N);
- -- Give a warning or error on the value outside the subtype. A
- -- warning is omitted if the expression appears in a range that could
- -- be null (warnings are handled elsewhere for this case).
+ -- Give a warning or error on the value outside the subtype. A warning
+ -- is omitted if the expression appears in a range that could be null
+ -- (warnings are handled elsewhere for this case).
elsif T /= Base_Type (T) and then Nkind (Parent (N)) /= N_Range then
if Is_In_Range (N, T, Assume_Valid => True) then
@@ -578,8 +578,8 @@ package body Sem_Eval is
if CodePeer_Mode and then T = RTE (RE_Priority) then
Set_Do_Range_Check (N, False);
- -- Determine if the out of range violation constitutes a warning
- -- or an error based on context according to RM 4.9 (34/3).
+ -- Determine if the out-of-range violation constitutes a warning
+ -- or an error based on context, according to RM 4.9 (34/3).
elsif Nkind_In (Original_Node (N), N_Type_Conversion,
N_Qualified_Expression)
@@ -4281,10 +4281,9 @@ package body Sem_Eval is
pragma Assert (Is_Access_Type (Underlying_Type (Etype (N))));
Val := Uint_0;
- -- Otherwise must be character literal
+ -- Character literal
- else
- pragma Assert (Kind = N_Character_Literal);
+ elsif Kind = N_Character_Literal then
Ent := Entity (N);
-- Since Character literals of type Standard.Character don't
@@ -4298,6 +4297,15 @@ package body Sem_Eval is
else
Val := Enumeration_Pos (Ent);
end if;
+
+ -- Unchecked conversion, which can come from System'To_Address (X)
+ -- where X is a static integer expression. Recursively evaluate X.
+
+ elsif Kind = N_Unchecked_Type_Conversion then
+ Val := Expr_Value (Expression (N));
+
+ else
+ raise Program_Error;
end if;
-- Come here with Val set to value to be returned, set cache
@@ -5523,8 +5531,8 @@ package body Sem_Eval is
-- CodePeer mode where the target runtime may have more priorities.
elsif not CodePeer_Mode or else Etype (N) /= RTE (RE_Priority) then
- -- Determine if the out of range violation constitutes a warning
- -- or an error based on context according to RM 4.9 (34/3).
+ -- Determine if the out-of-range violation constitutes a warning
+ -- or an error based on context, according to RM 4.9 (34/3).
if Nkind (Original_Node (N)) = N_Type_Conversion
and then not Comes_From_Source (Original_Node (N))
diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb
index 993a419d..5a561ea 100644
--- a/gcc/ada/sem_prag.adb
+++ b/gcc/ada/sem_prag.adb
@@ -3768,12 +3768,6 @@ package body Sem_Prag is
function Acc_Next (N : Node_Id) return Node_Id;
-- Helper function to iterate over arguments given to OpenAcc pragmas
- procedure Acquire_Warning_Match_String (Arg : Node_Id);
- -- Used by pragma Warnings (Off, string), and Warn_As_Error (string) to
- -- get the given string argument, and place it in Name_Buffer, adding
- -- leading and trailing asterisks if they are not already present. The
- -- caller has already checked that Arg is a static string expression.
-
procedure Ada_2005_Pragma;
-- Called for pragmas defined in Ada 2005, that are not in Ada 95. In
-- Ada 95 mode, these are implementation defined pragmas, so should be
@@ -4400,32 +4394,6 @@ package body Sem_Prag is
end if;
end Acc_Next;
- ----------------------------------
- -- Acquire_Warning_Match_String --
- ----------------------------------
-
- procedure Acquire_Warning_Match_String (Arg : Node_Id) is
- begin
- String_To_Name_Buffer
- (Strval (Expr_Value_S (Get_Pragma_Arg (Arg))));
-
- -- Add asterisk at start if not already there
-
- if Name_Len > 0 and then Name_Buffer (1) /= '*' then
- Name_Buffer (2 .. Name_Len + 1) :=
- Name_Buffer (1 .. Name_Len);
- Name_Buffer (1) := '*';
- Name_Len := Name_Len + 1;
- end if;
-
- -- Add asterisk at end if not already there
-
- if Name_Buffer (Name_Len) /= '*' then
- Name_Len := Name_Len + 1;
- Name_Buffer (Name_Len) := '*';
- end if;
- end Acquire_Warning_Match_String;
-
---------------------
-- Ada_2005_Pragma --
---------------------
@@ -13011,6 +12979,18 @@ package body Sem_Prag is
Ada_Version_Explicit := Ada_2020;
Ada_Version_Pragma := N;
+ -------------------------------------
+ -- Aggregate_Individually_Assign --
+ -------------------------------------
+
+ -- pragma Aggregate_Individually_Assign;
+
+ when Pragma_Aggregate_Individually_Assign =>
+ GNAT_Pragma;
+ Check_Arg_Count (0);
+ Check_Valid_Configuration_Pragma;
+ Aggregate_Individually_Assign := True;
+
----------------------
-- All_Calls_Remote --
----------------------
@@ -19558,7 +19538,7 @@ package body Sem_Prag is
| Pragma_Max_Entry_Queue_Depth
| Pragma_Max_Queue_Length
=>
- Max_Queue_Length : declare
+ Max_Entry_Queue_Length : declare
Arg : Node_Id;
Entry_Decl : Node_Id;
Entry_Id : Entity_Id;
@@ -19609,9 +19589,9 @@ package body Sem_Prag is
Val := Expr_Value (Arg);
- if Val <= 0 then
+ if Val < -1 then
Error_Pragma_Arg
- ("argument for pragma% must be positive", Arg1);
+ ("argument for pragma% cannot be less than -1", Arg1);
elsif not UI_Is_In_Int_Range (Val) then
Error_Pragma_Arg
@@ -19619,17 +19599,8 @@ package body Sem_Prag is
end if;
- -- Manually substitute the expression value of the pragma argument
- -- if it's not an integer literal because this is not taken care
- -- of automatically elsewhere.
-
- if Nkind (Arg) /= N_Integer_Literal then
- Rewrite (Arg, Make_Integer_Literal (Sloc (Arg), Val));
- Set_Etype (Arg, Etype (Original_Node (Arg)));
- end if;
-
Record_Rep_Item (Entry_Id, N);
- end Max_Queue_Length;
+ end Max_Entry_Queue_Length;
-----------------
-- Memory_Size --
@@ -21112,8 +21083,24 @@ package body Sem_Prag is
Decl := Parent (Ent);
if Present (Expression (Decl)) then
- Error_Pragma_Arg
- ("object for pragma% cannot have initialization", Arg1);
+ -- Variables in Persistent_BSS cannot be initialized, so
+ -- turn off any initialization that might be caused by
+ -- pragmas Initialize_Scalars or Normalize_Scalars.
+
+ if Kill_Range_Check (Expression (Decl)) then
+ Prag :=
+ Make_Pragma (Loc,
+ Name_Suppress_Initialization,
+ Pragma_Argument_Associations => New_List (
+ Make_Pragma_Argument_Association (Loc,
+ Expression => New_Occurrence_Of (Ent, Loc))));
+ Insert_Before (N, Prag);
+ Analyze (Prag);
+
+ else
+ Error_Pragma_Arg
+ ("object for pragma% cannot have initialization", Arg1);
+ end if;
end if;
if not Is_Potentially_Persistent_Type (Etype (Ent)) then
@@ -21124,7 +21111,7 @@ package body Sem_Prag is
Prag :=
Make_Linker_Section_Pragma
- (Ent, Sloc (N), ".persistent.bss");
+ (Ent, Loc, ".persistent.bss");
Insert_After (N, Prag);
Analyze (Prag);
@@ -25301,10 +25288,10 @@ package body Sem_Prag is
-- OK static string expression
else
- Acquire_Warning_Match_String (Arg1);
Warnings_As_Errors_Count := Warnings_As_Errors_Count + 1;
Warnings_As_Errors (Warnings_As_Errors_Count) :=
- new String'(Name_Buffer (1 .. Name_Len));
+ new String'(Acquire_Warning_Match_String
+ (Expr_Value_S (Get_Pragma_Arg (Arg1))));
end if;
--------------
@@ -25609,8 +25596,6 @@ package body Sem_Prag is
-- Static string expression case
else
- Acquire_Warning_Match_String (Arg2);
-
-- Note on configuration pragma case: If this is a
-- configuration pragma, then for an OFF pragma, we
-- just set Config True in the call, which is all
@@ -25630,22 +25615,27 @@ package body Sem_Prag is
-- generic unit we are inside is public, but for now
-- we don't bother with that refinement.
- if Chars (Argx) = Name_Off then
- Set_Specific_Warning_Off
- (Loc, Name_Buffer (1 .. Name_Len), Reason,
- Config => Is_Configuration_Pragma,
- Used => Inside_A_Generic or else In_Instance);
-
- elsif Chars (Argx) = Name_On then
- Set_Specific_Warning_On
- (Loc, Name_Buffer (1 .. Name_Len), Err);
-
- if Err then
- Error_Msg
- ("??pragma Warnings On with no matching "
- & "Warnings Off", Loc);
+ declare
+ Message : constant String :=
+ Acquire_Warning_Match_String
+ (Expr_Value_S (Get_Pragma_Arg (Arg2)));
+ begin
+ if Chars (Argx) = Name_Off then
+ Set_Specific_Warning_Off
+ (Loc, Message, Reason,
+ Config => Is_Configuration_Pragma,
+ Used => Inside_A_Generic or else In_Instance);
+
+ elsif Chars (Argx) = Name_On then
+ Set_Specific_Warning_On (Loc, Message, Err);
+
+ if Err then
+ Error_Msg
+ ("??pragma Warnings On with no matching "
+ & "Warnings Off", Loc);
+ end if;
end if;
- end if;
+ end;
end if;
end;
end if;
@@ -30919,6 +30909,7 @@ package body Sem_Prag is
Pragma_Ada_12 => -1,
Pragma_Ada_2012 => -1,
Pragma_Ada_2020 => -1,
+ Pragma_Aggregate_Individually_Assign => 0,
Pragma_All_Calls_Remote => -1,
Pragma_Allow_Integer_Address => -1,
Pragma_Annotate => 93,
diff --git a/gcc/ada/sem_spark.adb b/gcc/ada/sem_spark.adb
index 30e1426..038c7cd 100644
--- a/gcc/ada/sem_spark.adb
+++ b/gcc/ada/sem_spark.adb
@@ -672,7 +672,7 @@ package body Sem_SPARK is
-- Main traversal procedure to check safe pointer usage
procedure Check_Old_Loop_Entry (N : Node_Id);
- -- Check SPARK RM 3.10(14) regarding 'Old and 'Loop_Entry
+ -- Check SPARK RM 3.10(13) regarding 'Old and 'Loop_Entry
procedure Check_Package_Body (Pack : Node_Id);
@@ -1085,7 +1085,7 @@ package body Sem_SPARK is
Borrowed : constant Node_Id := Get_Observed_Or_Borrowed_Expr (Expr);
begin
- -- SPARK RM 3.10(8): If the type of the target is an anonymous
+ -- SPARK RM 3.10(7): If the type of the target is an anonymous
-- access-to-variable type (an owning access type), the source shall
-- be an owning access object [..] whose root object is the target
-- object itself.
@@ -1100,7 +1100,7 @@ package body Sem_SPARK is
if Emit_Messages then
Error_Msg_NE
("source of assignment must have & as root" &
- " (SPARK RM 3.10(8)))",
+ " (SPARK RM 3.10(7)))",
Expr, Var);
end if;
return;
@@ -1132,7 +1132,7 @@ package body Sem_SPARK is
if Emit_Messages then
Error_Msg_NE
("source of assignment must have & as root" &
- " (SPARK RM 3.10(8)))",
+ " (SPARK RM 3.10(7)))",
Expr, Var);
end if;
return;
@@ -1171,19 +1171,17 @@ package body Sem_SPARK is
Expr_Root := Get_Root_Object (Expr);
- -- SPARK RM 3.10(8): For an assignment statement where
- -- the target is a stand-alone object of an anonymous
- -- access-to-object type
+ -- SPARK RM 3.10(7): For an assignment statement where the target is
+ -- a stand-alone object of an anonymous access-to-object type.
pragma Assert (Present (Target_Root));
- -- If the type of the target is an anonymous
- -- access-to-constant type (an observing access type), the
- -- source shall be an owning access object denoted by a name
- -- that is not in the Moved state, and whose root object
- -- is not in the Moved state and is not declared at a
- -- statically deeper accessibility level than that of
- -- the target object.
+ -- If the type of the target is an anonymous access-to-constant type
+ -- (an observing access type), the source shall be an owning access
+ -- object denoted by a name that is not in the Moved state, and whose
+ -- root object is not in the Moved state and is not declared at a
+ -- statically deeper accessibility level than that of the target
+ -- object.
if Is_Access_Constant (Target_Typ) then
Perm := Get_Perm (Expr);
@@ -1206,11 +1204,10 @@ package body Sem_SPARK is
-- ??? check accessibility level
- -- If the type of the target is an anonymous
- -- access-to-variable type (an owning access type), the
- -- source shall be an owning access object denoted by a
- -- name that is in the Unrestricted state, and whose root
- -- object is the target object itself.
+ -- If the type of the target is an anonymous access-to-variable
+ -- type (an owning access type), the source shall be an owning
+ -- access object denoted by a name that is in the Unrestricted
+ -- state, and whose root object is the target object itself.
Check_Expression (Expr, Observe);
Handle_Observe (Target_Root, Expr, Is_Decl);
@@ -2858,7 +2855,7 @@ package body Sem_SPARK is
Error_Msg_Name_1 := Aname;
Error_Msg_N
("prefix of % attribute must be a function call "
- & "(SPARK RM 3.10(14))", Pref);
+ & "(SPARK RM 3.10(13))", Pref);
end if;
elsif Is_Traversal_Function_Call (Pref) then
@@ -2866,7 +2863,7 @@ package body Sem_SPARK is
Error_Msg_Name_1 := Aname;
Error_Msg_N
("prefix of % attribute should not call a traversal "
- & "function (SPARK RM 3.10(14))", Pref);
+ & "function (SPARK RM 3.10(13))", Pref);
end if;
end if;
end if;
@@ -3095,7 +3092,7 @@ package body Sem_SPARK is
-- Postconditions are checked for correct use of 'Old, but starting
-- from the corresponding declaration, in order to avoid dealing with
- -- with contracts on generic subprograms, which are not handled in
+ -- with contracts on generic subprograms which are not handled in
-- GNATprove.
when Pragma_Precondition
@@ -5113,6 +5110,7 @@ package body Sem_SPARK is
-- in an object.
if not Present (Root)
+ or else not Is_Object (Root)
or else not Is_Deep (Etype (Root))
then
return;
diff --git a/gcc/ada/sem_spark.ads b/gcc/ada/sem_spark.ads
index 0aaa115..ff9aa63 100644
--- a/gcc/ada/sem_spark.ads
+++ b/gcc/ada/sem_spark.ads
@@ -166,8 +166,7 @@ package Sem_SPARK is
-- when there are violations of ownership rules.
function Is_Deep (Typ : Entity_Id) return Boolean;
- -- A function that can tell whether a type is deep. Returns True if the
- -- type passed as argument is deep.
+ -- Returns True if the type passed as argument is deep
function Is_Traversal_Function (E : Entity_Id) return Boolean;
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
index dcef852..86ae740 100644
--- a/gcc/ada/sem_util.adb
+++ b/gcc/ada/sem_util.adb
@@ -247,6 +247,39 @@ package body Sem_Util is
return Interface_List (Nod);
end Abstract_Interface_List;
+ ----------------------------------
+ -- Acquire_Warning_Match_String --
+ ----------------------------------
+
+ function Acquire_Warning_Match_String (Str_Lit : Node_Id) return String is
+ S : constant String := To_String (Strval (Str_Lit));
+ begin
+ if S = "" then
+ return "";
+ else
+ -- Put "*" before or after or both, if it's not already there
+
+ declare
+ F : constant Boolean := S (S'First) = '*';
+ L : constant Boolean := S (S'Last) = '*';
+ begin
+ if F then
+ if L then
+ return S;
+ else
+ return S & "*";
+ end if;
+ else
+ if L then
+ return "*" & S;
+ else
+ return "*" & S & "*";
+ end if;
+ end if;
+ end;
+ end if;
+ end Acquire_Warning_Match_String;
+
--------------------------------
-- Add_Access_Type_To_Process --
--------------------------------
@@ -9719,16 +9752,28 @@ package body Sem_Util is
function Get_Max_Queue_Length (Id : Entity_Id) return Uint is
pragma Assert (Is_Entry (Id));
Prag : constant Entity_Id := Get_Pragma (Id, Pragma_Max_Queue_Length);
+ Max : Uint;
begin
- -- A value of 0 represents no maximum specified, and entries and entry
- -- families with no Max_Queue_Length aspect or pragma default to it.
+ -- A value of 0 or -1 represents no maximum specified, and entries and
+ -- entry families with no Max_Queue_Length aspect or pragma default to
+ -- it.
if not Present (Prag) then
return Uint_0;
end if;
- return Intval (Expression (First (Pragma_Argument_Associations (Prag))));
+ Max := Expr_Value
+ (Expression (First (Pragma_Argument_Associations (Prag))));
+
+ -- Since -1 and 0 are equivalent, return 0 for instances of -1 for
+ -- uniformity.
+
+ if Max = -1 then
+ return Uint_0;
+ end if;
+
+ return Max;
end Get_Max_Queue_Length;
------------------------
@@ -20579,6 +20624,10 @@ package body Sem_Util is
Old_Next : Node_Id;
begin
+ if No (First_Named_Actual (Old_Call)) then
+ return;
+ end if;
+
-- Recreate the First/Next_Named_Actual chain of a call by traversing
-- the chains of both the old and new calls in parallel.
@@ -20586,15 +20635,16 @@ package body Sem_Util is
Old_Act := First (Parameter_Associations (Old_Call));
while Present (Old_Act) loop
if Nkind (Old_Act) = N_Parameter_Association
- and then Present (Next_Named_Actual (Old_Act))
+ and then Explicit_Actual_Parameter (Old_Act)
+ = First_Named_Actual (Old_Call)
then
- if First_Named_Actual (Old_Call) =
- Explicit_Actual_Parameter (Old_Act)
- then
- Set_First_Named_Actual (New_Call,
- Explicit_Actual_Parameter (New_Act));
- end if;
+ Set_First_Named_Actual (New_Call,
+ Explicit_Actual_Parameter (New_Act));
+ end if;
+ if Nkind (Old_Act) = N_Parameter_Association
+ and then Present (Next_Named_Actual (Old_Act))
+ then
-- Scan the actual parameter list to find the next suitable
-- named actual. Note that the list may be out of order.
diff --git a/gcc/ada/sem_util.ads b/gcc/ada/sem_util.ads
index 4d738da..c9065e5 100644
--- a/gcc/ada/sem_util.ads
+++ b/gcc/ada/sem_util.ads
@@ -42,6 +42,12 @@ package Sem_Util is
-- including the cases where there can't be any because e.g. the type is
-- not tagged.
+ function Acquire_Warning_Match_String (Str_Lit : Node_Id) return String;
+ -- Used by pragma Warnings (Off, string), and Warn_As_Error (string) to get
+ -- the given string argument, adding leading and trailing asterisks if they
+ -- are not already present. Str_Lit is the static value of the pragma
+ -- argument.
+
procedure Add_Access_Type_To_Process (E : Entity_Id; A : Entity_Id);
-- Add A to the list of access types to process when expanding the
-- freeze node of E.
diff --git a/gcc/ada/sinfo.ads b/gcc/ada/sinfo.ads
index e3f7fd3..dc82800 100644
--- a/gcc/ada/sinfo.ads
+++ b/gcc/ada/sinfo.ads
@@ -2327,7 +2327,8 @@ package Sinfo is
-- Present in N_Extended_Return_Statement. Points to a list initially
-- containing a single N_Object_Declaration representing the return
-- object. We use a list (instead of just a pointer to the object decl)
- -- because Analyze wants to insert extra actions on this list.
+ -- because Analyze wants to insert extra actions on this list, before the
+ -- N_Object_Declaration, which always remains last on the list.
-- Rounded_Result (Flag18-Sem)
-- Present in N_Type_Conversion, N_Op_Divide, and N_Op_Multiply nodes.
diff --git a/gcc/ada/snames.ads-tmpl b/gcc/ada/snames.ads-tmpl
index d7507a2..985a19f 100644
--- a/gcc/ada/snames.ads-tmpl
+++ b/gcc/ada/snames.ads-tmpl
@@ -389,6 +389,7 @@ package Snames is
Name_Ada_12 : constant Name_Id := N + $; -- GNAT
Name_Ada_2012 : constant Name_Id := N + $; -- GNAT
Name_Ada_2020 : constant Name_Id := N + $; -- GNAT
+ Name_Aggregate_Individually_Assign : constant Name_Id := N + $; -- GNAT
Name_Allow_Integer_Address : constant Name_Id := N + $; -- GNAT
Name_Annotate : constant Name_Id := N + $; -- GNAT
Name_Assertion_Policy : constant Name_Id := N + $; -- Ada 05
@@ -1847,6 +1848,7 @@ package Snames is
Pragma_Ada_2020,
-- Note that there is no Pragma_Ada_20. Pragma_Ada_05/12 are for
-- compatibility reasons only; the full year names are preferred.
+ Pragma_Aggregate_Individually_Assign,
Pragma_Allow_Integer_Address,
Pragma_Annotate,
Pragma_Assertion_Policy,
diff --git a/gcc/ada/stringt.adb b/gcc/ada/stringt.adb
index bacb506..545705a 100644
--- a/gcc/ada/stringt.adb
+++ b/gcc/ada/stringt.adb
@@ -350,6 +350,17 @@ package body Stringt is
end Strings_Address;
---------------
+ -- To_String --
+ ---------------
+
+ function To_String (S : String_Id) return String is
+ Buf : Bounded_String;
+ begin
+ Append (Buf, S);
+ return To_String (Buf);
+ end To_String;
+
+ ---------------
-- Tree_Read --
---------------
diff --git a/gcc/ada/stringt.ads b/gcc/ada/stringt.ads
index 6d887ea..722d17f 100644
--- a/gcc/ada/stringt.ads
+++ b/gcc/ada/stringt.ads
@@ -127,6 +127,9 @@ package Stringt is
-- out of Character range. Does not attempt to do any encoding of
-- characters.
+ function To_String (S : String_Id) return String;
+ -- Return S as a String
+
procedure String_To_Name_Buffer (S : String_Id);
-- Place characters of given string in Name_Buffer, setting Name_Len.
-- Error if any characters are out of Character range. Does not attempt
diff --git a/gcc/ada/warnsw.adb b/gcc/ada/warnsw.adb
index a731907..a5096dc 100644
--- a/gcc/ada/warnsw.adb
+++ b/gcc/ada/warnsw.adb
@@ -79,6 +79,7 @@ package body Warnsw is
Warn_On_Questionable_Layout := Setting;
Warn_On_Questionable_Missing_Parens := Setting;
Warn_On_Record_Holes := Setting;
+ Warn_On_Component_Order := Setting;
Warn_On_Redundant_Constructs := Setting;
Warn_On_Reverse_Bit_Order := Setting;
Warn_On_Size_Alignment := Setting;
@@ -177,6 +178,8 @@ package body Warnsw is
W.Warn_On_Questionable_Missing_Parens;
Warn_On_Record_Holes :=
W.Warn_On_Record_Holes;
+ Warn_On_Component_Order :=
+ W.Warn_On_Component_Order;
Warn_On_Redundant_Constructs :=
W.Warn_On_Redundant_Constructs;
Warn_On_Reverse_Bit_Order :=
@@ -287,6 +290,8 @@ package body Warnsw is
Warn_On_Questionable_Missing_Parens;
W.Warn_On_Record_Holes :=
Warn_On_Record_Holes;
+ W.Warn_On_Component_Order :=
+ Warn_On_Component_Order;
W.Warn_On_Redundant_Constructs :=
Warn_On_Redundant_Constructs;
W.Warn_On_Reverse_Bit_Order :=
@@ -500,6 +505,12 @@ package body Warnsw is
when 'C' =>
Warn_On_Unknown_Compile_Time_Warning := False;
+ when 'r' =>
+ Warn_On_Component_Order := True;
+
+ when 'R' =>
+ Warn_On_Component_Order := False;
+
when others =>
if Ignore_Unrecognized_VWY_Switches then
Write_Line ("unrecognized switch -gnatw_" & C & " ignored");
diff --git a/gcc/ada/warnsw.ads b/gcc/ada/warnsw.ads
index f96c11c..0a3253e 100644
--- a/gcc/ada/warnsw.ads
+++ b/gcc/ada/warnsw.ads
@@ -67,6 +67,12 @@ package Warnsw is
-- Warn when explicit record component clauses leave uncovered holes (gaps)
-- in a record layout. Off by default, set by -gnatw.h (but not -gnatwa).
+ Warn_On_Component_Order : Boolean := False;
+ -- Warn when record component clauses are out of order with respect to the
+ -- component declarations, or if the memory layout is out of order with
+ -- respect to component declarations and clauses. Off by default, set by
+ -- -gnatw_r (but not -gnatwa).
+
Warn_On_Size_Alignment : Boolean := True;
-- Warn when explicit Size and Alignment clauses are given for a type, and
-- the size is not a multiple of the alignment. Off by default, modified
@@ -123,6 +129,7 @@ package Warnsw is
Warn_On_Questionable_Layout : Boolean;
Warn_On_Questionable_Missing_Parens : Boolean;
Warn_On_Record_Holes : Boolean;
+ Warn_On_Component_Order : Boolean;
Warn_On_Redundant_Constructs : Boolean;
Warn_On_Reverse_Bit_Order : Boolean;
Warn_On_Size_Alignment : Boolean;