* Pragma CPP_Constructor::
* Pragma CPP_Virtual::
* Pragma CPP_Vtable::
+* Pragma CPU::
* Pragma Debug::
* Pragma Debug_Policy::
+* Pragma Default_Storage_Pool::
* Pragma Detect_Blocking::
+* Pragma Dispatching_Domain::
* Pragma Elaboration_Checks::
* Pragma Eliminate::
* Pragma Export_Exception::
* Pragma Import_Object::
* Pragma Import_Procedure::
* Pragma Import_Valued_Procedure::
+* Pragma Independent::
+* Pragma Independent_Components::
* Pragma Initialize_Scalars::
* Pragma Inline_Always::
* Pragma Inline_Generic::
* Pragma Optimize_Alignment::
* Pragma Ordered::
* Pragma Overflow_Mode::
+* Pragma Partition_Elaboration_Policy::
* Pragma Passive::
* Pragma Persistent_BSS::
* Pragma Polling::
* Pragma Postcondition::
* Pragma Precondition::
+* Pragma Preelaborable_Initialization::
+* Pragma Priority_Specific_Dispatching::
* Pragma Profile (Ravenscar)::
* Pragma Profile (Restricted)::
* Pragma Psect_Object::
* Pragma Pure_Function::
+* Pragma Relative_Deadline::
* Pragma Remote_Access_Type::
* Pragma Restriction_Warnings::
* Pragma Shared::
* Pragma CPP_Constructor::
* Pragma CPP_Virtual::
* Pragma CPP_Vtable::
+* Pragma CPU::
* Pragma Debug::
* Pragma Debug_Policy::
+* Pragma Default_Storage_Pool::
* Pragma Detect_Blocking::
+* Pragma Dispatching_Domain::
* Pragma Elaboration_Checks::
* Pragma Eliminate::
* Pragma Export_Exception::
* Pragma Import_Object::
* Pragma Import_Procedure::
* Pragma Import_Valued_Procedure::
+* Pragma Independent::
+* Pragma Independent_Components::
* Pragma Initialize_Scalars::
* Pragma Inline_Always::
* Pragma Inline_Generic::
* Pragma Optimize_Alignment::
* Pragma Ordered::
* Pragma Overflow_Mode::
+* Pragma Partition_Elaboration_Policy::
* Pragma Passive::
* Pragma Persistent_BSS::
* Pragma Polling::
* Pragma Postcondition::
* Pragma Precondition::
+* Pragma Preelaborable_Initialization::
+* Pragma Priority_Specific_Dispatching::
* Pragma Profile (Ravenscar)::
* Pragma Profile (Restricted)::
* Pragma Psect_Object::
* Pragma Pure_Function::
+* Pragma Relative_Deadline::
* Pragma Remote_Access_Type::
* Pragma Restriction_Warnings::
* Pragma Shared::
@end smallexample
@noindent
+This is a standard Ada 2005 pragma that is available as an
+implementation-defined pragma in earlier versions of Ada.
+
If the argument is @code{CHECK}, then assertions are enabled.
If the argument is @code{IGNORE}, then assertions are ignored.
This pragma overrides the effect of the @option{-gnata} switch on the
See @ref{Interfacing to C++} for related information.
+@node Pragma CPU
+@unnumberedsec Pragma CPU
+@findex CPU
+@noindent
+Syntax:
+
+@smallexample @c ada
+pragma CPU (EXPRESSSION);
+@end smallexample
+
+@noindent
+This pragma is standard in Ada 2012, but is available in all earlier
+versions of Ada as an implementation-defined pragma.
+See Ada 2012 Reference Manual for details.
+
@node Pragma Debug
@unnumberedsec Pragma Debug
@findex Debug
in a with'ed package which is replaced by a dummy package
for the final build.
+@node Pragma Default_Storage_Pool
+@unnumberedsec Pragma Default_Storage_Pool
+@findex Default_Storage_Pool
+@noindent
+Syntax:
+
+@smallexample @c ada
+pragma Default_Storage_Pool (storage_pool_NAME | null);
+@end smallexample
+
+@noindent
+This pragma is standard in Ada 2012, but is available in all earlier
+versions of Ada as an implementation-defined pragma.
+See Ada 2012 Reference Manual for details.
+
@node Pragma Detect_Blocking
@unnumberedsec Pragma Detect_Blocking
@findex Detect_Blocking
@end smallexample
@noindent
+This is a standard pragma in Ada 2005, that is available in all earlier
+versions of Ada as an implementation-defined pragma.
+
This is a configuration pragma that forces the detection of potentially
blocking operations within a protected operation, and to raise Program_Error
if that happens.
+@node Pragma Dispatching_Domain
+@unnumberedsec Pragma Dispatching_Domain
+@findex Dispatching_Domain
+@noindent
+Syntax:
+
+@smallexample @c ada
+pragma Dispatching_Domain (EXPRESSION);
+@end smallexample
+
+@noindent
+This pragma is standard in Ada 2012, but is available in all earlier
+versions of Ada as an implementation-defined pragma.
+See Ada 2012 Reference Manual for details.
+
@node Pragma Elaboration_Checks
@unnumberedsec Pragma Elaboration_Checks
@cindex Elaboration control
and synchronized interface primitives. The use of pragma Implemented provides
a way to impose a static requirement on the overriding operation by adhering
to one of the three implementation kids: entry, protected procedure or any of
-the above.
+the above. This pragma is available in all earlier versions of Ada as an
+implementation-defined pragma.
@smallexample @c ada
type Synch_Iface is synchronized interface;
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
+@unnumberedsec Pragma Independent
+@findex Independent
+@noindent
+Syntax:
+
+@smallexample @c ada
+pragma Independent (Local_NAME);
+@end smallexample
+
+@noindent
+This pragma is standard in Ada 2012 mode (which also provides an aspect
+of the same name). It is also available as an implementation-defined
+pragma in all earlier versions. It specifies that the
+designated object or all objects of the designated type must be
+independently addressable. This means that separate tasks can safely
+manipulate such objects. For example, if two comonents of a record are
+independent, then two separate tasks may access these two components.
+This may place
+constraints on the representation of the object (for instance prohibiting
+tight packing).
+
+@node Pragma Independent_Components
+@unnumberedsec Pragma Independent_Components
+@findex Independent_Components
+@noindent
+Syntax:
+
+@smallexample @c ada
+pragma Independent_Components (Local_NAME);
+@end smallexample
+
+@noindent
+This pragma is standard in Ada 2012 mode (which also provides an aspect
+of the same name). It is also available as an implementation-defined
+pragma in all earlier versions. It specifies that the components of the
+designated object or all objects of the designated type must be
+independently addressable. This means that separate tasks can safely
+manipulate separate components in the composite object. this may place
+constraints on the representation of the object (for instance prohibiting
+tight packing).
+
@node Pragma Initialize_Scalars
@unnumberedsec Pragma Initialize_Scalars
@findex Initialize_Scalars
about missing returns in functions, where the last statement of a function
statement sequence is a call to such a procedure.
-Note that in Ada 2005 mode, this pragma is part of the language, and is
-identical in effect to the pragma as implemented in Ada 95 mode.
+Note that in Ada 2005 mode, this pragma is part of the language. It is
+available in all earlier versions of Ada as an implementation-defined
+pragma.
@node Pragma No_Strict_Aliasing
@unnumberedsec Pragma No_Strict_Aliasing
The pragma @code{Unsuppress (Overflow_Check)} unsuppresses (enables)
overflow checking, but does not affect the overflow mode.
+@node Pragma Partition_Elaboration_Policy
+@unnumberedsec Pragma Partition_Elaboration_Policy
+@findex Partition_Elaboration_Policy
+@noindent
+Syntax:
+
+@smallexample @c ada
+pragma Partition_Elaboration_Policy (POLICY_IDENTIFIER);
+
+POLICY_IDENTIFIER ::= Concurrent | Sequential
+@end smallexample
+
+@noindent
+This pragma is standard in Ada 2005, but is available in all earlier
+versions of Ada as an implementation-defined pragma.
+See Ada 2012 Reference Manual for details.
+
@node Pragma Passive
@unnumberedsec Pragma Passive
@findex Passive
by the compiler, but are ignored at run-time even if postcondition
checking is enabled.
+@node Pragma Preelaborable_Initialization
+@unnumberedsec Pragma Preelaborable_Initialization
+@findex Preelaborable_Initialization
+@noindent
+Syntax:
+
+@smallexample @c ada
+pragma Preelaborable_Initialization (DIRECT_NAME);
+@end smallexample
+
+@noindent
+This pragma is standard in Ada 2005, but is available in all earlier
+versions of Ada as an implementation-defined pragma.
+See Ada 2012 Reference Manual for details.
+
+@node Pragma Priority_Specific_Dispatching
+@unnumberedsec Pragma Priority_Specific_Dispatching
+@findex Priority_Specific_Dispatching
+@noindent
+Syntax:
+
+@smallexample @c ada
+pragma Priority_Specific_Dispatching (
+ POLICY_IDENTIFIER,
+ first_priority_EXPRESSION,
+ last_priority_EXPRESSION)
+
+POLICY_IDENTIFIER ::=
+ EDF_Across_Priorities |
+ FIFO_Within_Priorities |
+ Non_Preemptive_Within_Priorities |
+ Round_Robin_Within_Priorities
+@end smallexample
+
+@noindent
+This pragma is standard in Ada 2005, but is available in all earlier
+versions of Ada as an implementation-defined pragma.
+See Ada 2012 Reference Manual for details.
+
@node Pragma Precondition
@unnumberedsec Pragma Precondition
@cindex Preconditions
Syntax:
@smallexample @c ada
-pragma Profile (Ravenscar);
+pragma Profile (Ravenscar | Restricted);
@end smallexample
@noindent
-A configuration pragma that establishes the following set of configuration
+This pragma is standard in Ada 2005, but is available in all earlier
+versions of Ada as an implementation-defined pragma. This is a
+configuration pragma that establishes the following set of configuration
pragmas:
@table @code
@end smallexample
@noindent
-A configuration pragma that establishes the following set of restrictions:
+This is an implementation-defined version of the standard pragma defined
+in Ada 2005. It is available in all versions of Ada. It is a
+configuration pragma that establishes the following set of restrictions:
@itemize @bullet
@item No_Abort_Statements
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 Relative_Deadline
+@unnumberedsec Pragma Relative_Deadline
+@findex Relative_Deadline
+@noindent
+Syntax:
+
+@smallexample @c ada
+pragma Relative_Deadline (time_span_EXPRESSSION);
+@end smallexample
+
+@noindent
+This pragma is standard in Ada 2005, but is available in all earlier
+versions of Ada as an implementation-defined pragma.
+See Ada 2012 Reference Manual for details.
+
@node Pragma Remote_Access_Type
@unnumberedsec Pragma Remote_Access_Type
@findex Remote_Access_Type
pragma in the GNAT Ada 95 mode. Ada 2005 includes an extended version of this
pragma, making it language defined, and GNAT fully implements this extended
version in all language modes (Ada 83, Ada 95, and Ada 2005). For full
-details, consult the Ada 2005 Reference Manual, section B.3.3.
+details, consult the Ada 2012 Reference Manual, section B.3.3.
@node Pragma Unimplemented_Unit
@unnumberedsec Pragma Unimplemented_Unit
will compile correctly even if the compiler switches are set to suppress
checks.
+This pragma is standard in Ada 2005. It is available in all earlier versions
+of Ada as an implementation-defined pragma.
+
@node Pragma Use_VADS_Size
@unnumberedsec Pragma Use_VADS_Size
@cindex @code{Size}, VADS compatibility