Contents Index Search Previous Next
13.12 Pragma Restrictions
1
A pragma
Restrictions expresses the user's intent to abide by certain restrictions.
This may facilitate the construction of simpler run-time environments.
Syntax
2
The form of
a pragma Restrictions is as follows:
3
pragma Restrictions(
restriction{,
restriction});
4
restriction
::= restriction_identifier
|
restriction_parameter_identifier =>
expression
Name Resolution Rules
5
Unless otherwise specified
for a particular restriction, the
expression
is expected to be of any integer type.
Legality Rules
6
Unless otherwise specified for a particular restriction,
the expression shall be static,
and its value shall be nonnegative.
Static Semantics
7
The set of restrictions
is implementation defined.
Post-Compilation Rules
8
A
pragma
Restrictions is a configuration pragma; unless otherwise specified for
a particular restriction, a partition shall obey the restriction if a
pragma Restrictions applies to any
compilation unit included in the partition.
8.1/1
For the purpose
of checking whether a partition contains constructs that violate any
restriction (unless specified otherwise for a particular restriction):
8.2/1
- Generic instances are logically expanded
at the point of instantiation;
8.3/1
- If an object of a type is declared
or allocated and not explicitly initialized, then all expressions appearing
in the definition for the type and any of its ancestors are presumed
to be used;
8.4/1
- A default_expression
for a formal parameter or a generic formal object is considered to be
used if and only if the corresponding actual parameter is not provided
in a given call or instantiation.
Implementation Permissions
9
An implementation may place limitations on the
values of the expression that are
supported, and limitations on the supported combinations of restrictions.
The consequences of violating such limitations are implementation defined.
9.1/1
An implementation is permitted to omit restriction
checks for code that is recognized at compile time to be unreachable
and for which no code is generated.
9.2/1
Whenever enforcement of a restriction is not
required prior to execution, an implementation may nevertheless enforce
the restriction prior to execution of a partition to which the restriction
applies, provided that every execution of the partition would violate
the restriction.
10
28 Restrictions intended
to facilitate the construction of efficient tasking run-time systems
are defined in D.7. Safety- and security-related
restrictions are defined in H.4.
11
29 An implementation has
to enforce the restrictions in cases where enforcement is required, even
if it chooses not to take advantage of the restrictions in terms of efficiency.
Contents Index Search Previous Next Legal