VMS Help
ADA, Positional Qualifiers, /OPTIMIZE

 *Conan The Librarian

    /OPTIMIZE[=(option,...])]
    /NOOPTIMIZE

    Controls the level of optimization that is applied in producing
    the compiled code. You can specify one of the following primary
    options:

    TIME          Provides full optimization with time as the primary
                  optimization criterion. Overrides any occurrences
                  of the pragma OPTIMIZE(SPACE) in the source code.
    SPACE         Provides full optimization with space as the
                  primary optimization criterion. Overrides any
                  occurrences of the pragma OPTIMIZE(TIME) in the
                  source code.
    DEVELOPMENT   Suggested when active development of a program
                  is in progress. Provides some optimization, but
                  development considerations and ease of debugging
                  take preference over optimization. This option
                  overrides pragmas that establish a dependence on
                  a subprogram or generic body (the pragmas INLINE
                  and INLINE_GENERIC), and therefore reduces the need for
                  recompilations when such bodies are modified. This
                  option also disables generic code sharing.
    NONE          Provides no optimization. Suppresses inline
                  expansions of subprograms and generics, including
                  those specified by the pragmas INLINE and INLINE_
                  GENERIC. Suppresses occurrences of the pragma
                  SHARE_GENERIC and disables generic code sharing.

    The /NOOPTIMIZE qualifier is equivalent to /OPTIMIZE=NONE.

    By default, the ADA command applies full optimization with time
    as the primary optimization criterion (like /OPTIMIZE=TIME, but
    observing uses of the pragma OPTIMIZE).

    The /OPTIMIZE qualifier also has a set of secondary options that
    you can use separately or together with the primary options to
    override the default behavior for inline expansion (generic and
    subprogram) and generic code sharing.

    The INLINE secondary option can have the following values (see
    the DEC Ada Run-Time Reference Manual for OpenVMS Systems for
    more information about inline expansion):

    NONE             Disables subprogram and generic inline
                     expansion. This option overrides any occurrences
                     of the pragmas INLINE or INLINE_GENERIC in the
                     source code, without your having to edit the
                     source file. It also disables implicit inline
                     expansion of subprograms. (Implicit inline
                     expansion means that the compiler assumes a
                     pragma INLINE for certain subprograms as an
                     optimization.) A call to a subprogram or an
                     instance of a generic in another unit is not
                     expanded inline, regardless of the /OPTIMIZE
                     options in effect when that unit was compiled.
    NORMAL           Provides normal subprogram and generic inline
                     expansion.

                     Subprograms to which an explicit pragma INLINE
                     applies are expanded inline under certain
                     conditions. In addition, some subprograms are
                     implicitly expanded inline. The compiler assumes
                     a pragma INLINE for calls to some small local
                     subprograms (subprograms that are declared in
                     the same unit as the unit in which the call
                     occurs).

                     Instances are compiled separately from the unit
                     in which the instantiation occurred unless a
                     pragma INLINE_GENERIC applies to the instance.
                     If a pragma INLINE_GENERIC applies and the
                     generic body has been compiled, the generic is
                     expanded inline at the point of instantiation.
    SUBPROGRAMS      Provides maximal subprogram inline expansion and
                     normal generic inline expansion.

                     In addition to the normal subprogram inline
                     expansion that occurs when INLINE:NORMAL is
                     specified, this option results in implicit
                     inline expansion of some small subprograms
                     declared in other units. The compiler assumes a
                     pragma INLINE for any subprogram if it improves
                     execution speed and reduces code size. This
                     option may establish a dependence on the body of
                     another unit, as would be the case if a pragma
                     INLINE were specified explicitly in the source
                     code.

                     With this option, generic inline expansion
                     occurs in the same manner as for INLINE:NORMAL.
    GENERICS         Provides normal subprogram inline expansion and
                     maximal generic inline expansion.

                     With this option, subprogram inline expansion
                     occurs in the same manner as for INLINE:NORMAL.

                     The compiler assumes a pragma INLINE_GENERIC for
                     every instantiation in the unit being compiled
                     unless an explicit pragma SHARE_GENERIC applies.
                     This option may establish a dependence on the
                     body of another unit, as would be the case if a
                     pragma INLINE_GENERIC were specified explicitly
                     in the source code.
    MAXIMAL          Provides maximal subprogram and generic inline
                     expansion.

                     Maximal subprogram inline expansion occurs as
                     for INLINE:SUBPROGRAMS, and maximal generic
                     inline expansion occurs as for INLINE:GENERICS.

    The SHARE secondary option can have the following values:

    NONE          Disables generic sharing. This option overrides
                  the effect of any occurrences of the pragma SHARE_
                  GENERIC in the source code, without your having to
                  edit the source file. In addition, instances do not
                  share code from previous instantiations.
    NORMAL        Provides normal generic sharing. Normally, the
                  compiler will not attempt to generate sharable
                  code for an instance (code that can be shared
                  by subsequent instantiations) unless an explicit
                  pragma SHARE_GENERIC applies to that instance.
                  However, an instance will attempt to share code
                  that resulted from a previous instantiation to
                  which the pragma SHARE_GENERIC applied.
    MAXIMAL       Provides maximal generic sharing. The compiler
                  assumes that a pragma SHARE_GENERIC applies to
                  every instance in the unit being compiled unless
                  an explicit pragma INLINE_GENERIC applies. Therefore, an
                  instance will attempt to share code that resulted
                  from a previous instantiation or to generate code
                  that can be shared by subsequent instantiations.

                  SHARE:MAXIMAL cannot be used in combination with
                  INLINE:GENERICS or INLINE:MAXIMAL.

    By default, if you specify one of the /OPTIMIZE
    qualifier primary options on the left (for example,
    /OPTIMIZE=TIME), it has the same effect as specifying
    the secondary-option values to the right (in this case,
    /OPTIMIZE=(TIME,INLINE:NORMAL,SHARE:NORMAL)):

    TIME        /OPTIMIZE=(TIME,INLINE:NORMAL,SHARE:NORMAL)
    SPACE       /OPTIMIZE=(SPACE,INLINE:NORMAL,SHARE:NORMAL)
    DEVELOPMENT /OPTIMIZE=(DEVELOPMENT,INLINE:NONE,SHARE:NONE)
    NONE        /OPTIMIZE=(NONE,INLINE:NONE,SHARE:NONE)

    See Developing Ada Programs on OpenVMS Systems for more
    information on the /OPTIMIZE qualifier and its options.
  Close     Help