C.4 Preelaboration Requirements
This Reference Manual output has not been verified, and may contain omissions or errors. Report any problems on the tracking issue
[This subclause specifies additional implementation and documentation requirements for the Preelaborate aspect (see 10.2.1).]
The implementation shall not incur any run-time overhead for the elaboration checks of subprograms and
protected_bodies declared in preelaborated library units.
The implementation shall not execute any memory write operations after load time for the elaboration of constant objects declared immediately within the declarative region of a preelaborated library package, so long as the subtype and initial expression (or default initial expressions if initialized by default) of the
object_declaration satisfy the following restrictions. The meaning of load time is implementation defined.
subtype_markdenotes a statically constrained subtype, with statically constrained subcomponents, if any; 4.1/2
subtype_markdenotes a controlled type, a private type, a private extension, a generic formal private type, a generic formal derived type, or a descendant of such a type;
constraintis a static constraint; 6
allocatoris for an access-to-constant type; 7
- any uses of predefined operators appear only within static expressions;
names, other than
attribute_references for the Access or Address attributes, appear only within static expressions;
attribute_references that are not static, except for Access and Address.
namethat is not part of a static expression is an expanded name or
direct_namethat statically names some entity;
type_conversions that are not static, including calls on attribute functions like 'Image and 'Value. We do allow components if those components don't require any evaluation or checks.
array_aggregateis static; 11
- no language-defined check associated with the elaboration of the
The implementation shall document any circumstances under which the elaboration of a preelaborated package causes code to be executed at run time.
The implementation shall document whether the method used for initialization of preelaborated variables allows a partition to be restarted without reloading.
It is recommended that preelaborated packages be implemented in such a way that there should be little or no code executed at run time for the elaboration of entities not already covered by the Implementation Requirements.