OpenVMS Alpha and OpenVMS I64 only
Directs the compiler to make additional assumptions about the
behavior of the program.
[NO]ACCURACY_SENSITIVE
Specifies whether certain code transformations that affect
floating-point operations are allowed. These changes may or may
not affect the accuracy of the program's results.
If you specify NOACCURACY_SENSITIVE, the compiler is free to
reorder floating-point operations based on algebraic identities
(inverses, associativity, and distribution). This allows the
compiler to move additional floating-point operations outside of
loops or reduce or remove floating-point operations totally,
thereby improving performance.
The default, ACCURACY_SENSITIVE, directs the compiler to avoid
certain floating-point trasformations that might slighly affect
the program's accuracy.
[NO]BYTE_ALIGNED_POINTERS
Specifies that the compiler should assume that all pointers point
to memory that is only aligned on byte boundaries.
Normally, the compiler assumes that pointer variables are
initialized by a call to the NEW predeclared routine. The memory
returned by NEW is at least quadword aligned. The compiler can
take advantage of that alignment to generate better code.
However, if the program initializes the pointers by some other
means such as IADDRESS or typecasting with values that are not
quadword aligned, then the generated code may produce alignment
faults. While the alignment faults are silently handled by
OpenVMS, the resulting performance loss might be significant.
By specifying BYTE_ALIGNED_POINTERS, the compiler will generate
slightly slower code to fetch the value. However, compared to
the overhead of correcting the alignment faults, this additional
overhead is very small.
The preferred solution is to ensure that all pointers contain
quadword aligned addresses and use the default of
NOBYTE_ALIGNED_POINTERS.
[NO]LONG_CALLS (OpenVMS I64 only)
Specifies that the compiler should assume that calls to external
routines require the Itanium 'brl.call' instruction instead of the
shorter 'br.call' instruction. This option is only needed if the
OpenVMS I64 linker cannot process a PCREL21B relocation for the
default shorter instruction.
[NO]REDUCED_RELOCATIONS (OpenVMS I64 only)
Specifies that the compiler should generate additional instructions
in order to minimize the number of address constants required.
Normally, the compiler may ask the linker for many address constants.
However, for large applications, the linker may not be able to produce
all requested address constants.
This option is only needed if the OpenVMS I64 linker overflows the
limit of address constants for the image.
/ASSUME=(ACCURACY_SENSITIVE, NOBYTE_ALIGNED_POINTERS,
NOLONG_CALLS, NOREDUCED_RELOCATIONS) is enabled by default. You
cannot specify /ASSUME without options.