Copyright Digital Equipment Corp. All rights reserved.

/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.