Optimizer Assumptions [ Getting Started as an MPE/iX Programmer Programmer's Guide ] MPE/iX 5.0 Documentation
Getting Started as an MPE/iX Programmer Programmer's Guide
Optimizer Assumptions
During compilation, a compiler gathers information about the use of
variables and passes it to the Optimizer. The MPE/iX Optimizer uses the
information to ensure that each code transformation it performs maintains
the correctness of the program (at least to the extent that the original
unoptimized program is correct).
The compiler assumes that inside a subroutine or function, only the
following variables can be accessed directly, indirectly, or by another
function call:
* Common variables declared in this routine.
* Local variables (static and dynamic).
* Parameters to this routine.
* Global variables visible in this routine.
If you have code that violates these assumptions, Optimizer can change
the behavior of the program in an undesirable way. Avoid the following
coding practices to ensure correct program execution in optimized code:
* Referencing outside the described bounds of an array. This can
cause address corruption or cause the program to abort when it is
run.
* Using variables that can be accessed by a process other than the
program, such as shared common variables. The compiler assumes
that the program is the only process accessing the data. (HP
FORTRAN 77/iX has some exceptions.) HP C/iX, HP Pascal/iX, and HP
FORTRAN 77/iX provide compiler options to change the assumptions
about a routine.
* Avoid using variables before they have been initialized. The
optimized version of a program may run differently than the
unoptimized version.
For detailed information, refer to HP FORTRAN 77/iX Programmer's Guide
Supplement (31501-90002) and HP Pascal/iX Programmer's Guide
(31502-90002).
MPE/iX 5.0 Documentation