attributes whose meaning is defined by the implementation. GNAT provides
a number of these implementation-dependent attributes which can be used
to extend and enhance the functionality of the compiler. This section of
-the GNAT reference manual describes these additional attributes.
+the GNAT reference manual describes these additional attributes. It also
+describes additional implementation-dependent features of standard
+language-defined attributes.
Note that any program using these attributes may not be portable to
other compilers (although GNAT implements this set of attributes on all
@unnumberedsec Attribute From_Any
@findex From_Any
@noindent
-PLEASE ADD DOCUMENTATION HERE???
+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
@unnumberedsec Attribute Has_Access_Values
@unnumberedsec Attribute Old
@findex Old
@noindent
-PLEASE ADD DOCUMENTATION HERE???
+In addition to the usage of Old defined in the Ada 2012 RM (usage
+within @code{Post} aspect), GNAT also permits the use of this attribute
+in implementation defined pragmas @code{Postcondition},
+@code{Loop_Entry}, and @code{Contract_Cases}. Also usages of
+@code{Old} which would be illegal according to the Ada 2012 RM
+definition are allowed under control of
+implementation defined pragma @code{Allow_Unevaluated_Use_Of_Old}.
@node Attribute Passed_By_Reference
@unnumberedsec Attribute Passed_By_Reference
@unnumberedsec Attribute To_Any
@findex To_Any
@noindent
-PLEASE ADD DOCUMENTATION HERE???
+This internal attribute is used for the generation of remote subprogram
+stubs in the context of the Distributed Systems Annex.
@node Attribute Type_Class
@unnumberedsec Attribute Type_Class
@unnumberedsec Attribute Type_Key
@findex Type_Key
@noindent
-PLEASE ADD DOCUMENTATION HERE???
+The @code{Type_Key} attribute is applicable to a type or subtype and
+yields a value of type Standard.String containing encoded information
+about the type or subtype. This provides improved compatibility with
+other implementations that support this attribute.
@node Attribute TypeCode
@unnumberedsec Attribute TypeCode
@findex TypeCode
@noindent
-PLEASE ADD DOCUMENTATION HERE???
+This internal attribute is used for the generation of remote subprogram
+stubs in the context of the Distributed Systems Annex.
@node Attribute UET_Address
@unnumberedsec Attribute UET_Address
-- not make sense from a user point-of-view, and that cross-references that
-- do not lead to data dependences for subprograms can be safely ignored.
- -- In addition pragma Debug statements are removed from the tree (rewritten
- -- to NULL stmt), since they should be ignored in formal verification.
+ -- GNATprove relies on the following frontend behaviors:
- -- An error is also issued for missing subunits, similar to the warning
- -- issued when generating code, to avoid formal verification of a partial
- -- unit.
+ -- 1. The first declarations in the list of visible declarations of
+ -- a package declaration for a generic instance, up to the first
+ -- declaration which comes from source, should correspond to
+ -- the "mappings nodes" between formal and actual generic parameters.
+
+ -- 2. In addition pragma Debug statements are removed from the tree
+ -- (rewritten to NULL stmt), since they should be ignored in formal
+ -- verification.
+
+ -- 3. An error is also issued for missing subunits, similar to the
+ -- warning issued when generating code, to avoid formal verification
+ -- of a partial unit.
-----------------------
-- Check Flag Fields --