H.3.1 Pragma Reviewable
This pragma directs the implementation to provide
information to facilitate analysis and review of a program's object code,
in particular to allow determination of execution time and storage usage
and to identify the correspondence between the source and object programs.
Syntax
The form of a
pragma
Reviewable is as follows:
Post-Compilation Rules
Pragma Reviewable
is a configuration pragma. It applies to all
compilation_units
included in a partition.
Implementation Requirements
The implementation
shall provide the following information for any compilation unit to which
such a pragma applies:
Where compiler-generated runtime checks remain;
An identification of any construct with a language-defined
check that is recognized prior to run time as certain to fail if executed
(even if the generation of runtime checks has been suppressed);
For each read of a scalar object, an identification
of the read as either “known to be initialized”, or “possibly
uninitialized”, independent of whether pragma Normalize_Scalars
applies;
Where run-time support routines are implicitly
invoked;
An object code listing,
including:
Machine instructions, with relative
offsets;
Where each data object is stored
during its lifetime;
Correspondence with the source program,
including an identification of the code produced per declaration and
per statement.
An identification of each construct for which the
implementation detects the possibility of erroneous execution;
For each subprogram,
block, task, or other construct implemented by reserving and subsequently
freeing an area on a run-time stack, an identification of the length
of the fixed-size portion of the area and an indication of whether the
non-fixed size portion is reserved on the stack or in a dynamically-managed
storage region.
The implementation
shall provide the following information for any partition to which the
pragma applies:
An object code listing of the entire partition,
including initialization and finalization code as well as run-time system
components, and with an identification of those instructions and data
that will be relocated at load time;
A description of the run-time model relevant to
the partition.
The implementation shall provide control- and data-flow
information, both within each compilation unit and across the compilation
units of the partition.
Implementation Advice
The implementation should provide the above information
in both a human-readable and machine-readable form, and should document
the latter so as to ease further processing by automated tools.
Object code listings should be provided both in a
symbolic format and also in an appropriate numeric format (such as hexadecimal
or octal).
NOTE The order of elaboration of
library units will be documented even in the absence of
pragma
Reviewable (see
10.2).
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe