Library /sys$common/syshlp/helplib.hlb  —  PASCAL  /ASSUME=(option[,...]) D=/ASSUME=(ACCURACY,NOBYTE,NOLONG,NOREDUCED)
                                   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.
Close Help