None.
Attempts to inline procedures instead of generating calls to those procedures, for improved performance.
>>-+- -qinline-+----------------------------+-+---------------->< | | .-:--------------------. | | | | V | | | | +-=---+-auto-------------+-+-+ | | | +-noauto-----------+ | | | | '-level--=--number-' | | | | .-:--------------. | | | | V | | | | '-+- + +----procedure_name-+-' | | '- - ' | '- -qnoinline------------------------------'
If -qinline is not specified, the default option is -qnoinline at the -O0 or -qnoopt optimization level or -qinline=noauto:level=5 at the -O2 or higher optimization levels.
If -qinline is specified without any suboptions, the default option is -qinline=auto:level=5.
You can specify -qinline with any optimization level of -O2, -O3, -O4, or -O5 to enable inlining of procedures.
When -qinline is in effect, the compiler determines whether inlining a specific procedure can improve performance. That is, whether a procedure is appropriate for inlining is subject to two factors: limits on the number of inlined calls and the amount of code size increase as a result. Therefore, enabling inlining a procedure does not guarantee that procedure will be inlined.
Because inlining does not always improve runtime performance, you need to test the effects of this option on your code. Do not attempt to inline recursive or mutually recursive procedures.
You can use the -qinline+<procedure_name> or -qinline-<procedure_name> option to specify the procedures that must be inlined or must not be inlined.
Specifying -qnoinline disables all inlining, including that achieved by the high-level optimizer with the -qipa option.
If you specify the -g option to generate debugging information, the inlining effect of -qinline might be suppressed.
If you specify the -qcompact option to avoid optimizations that increase code size, the inlining effect of -qinline might be suppressed.
By default, -qinline affects only internal or module procedures. To turn on inline expansion for calls to procedures in different scopes, you must also use the -qipa option.
Conflicting @PROCESS directives or compilation options that are applied to different compilation units can impact inlining effectiveness. For example, if you specify inlining for a procedure, some @PROCESS compiler directives can be rendered ineffective. See the XL Fortran Optimization and Programming Guide for more information about inlining and IPA.
If you specify inlining for a procedure, the following @PROCESS compiler directives are only effective if they come before the first compilation unit in the file: ALIAS, ALIGN, ATTR, COMPACT, DBG, EXTCHK, EXTNAME, FLOAT, FLTTRAP, HALT, IEEE, LIST, MAXMEM, OBJECT, OPTIMIZE, PHSINFO, SPILLSIZE, STRICT, and XREF.
xlf myprogram.f -O2 -qnoinline
-O2 -qinline=auto
-O2 -qinline=auto:level=7
If
automatic inlining is already enabled by default and you want to specify
an inlining level of 7, you enter:-O2 -qinline=level=7
xlf myprogram.f -O2 -qinline+salary:taxes:expenses:benefits
xlf myprogram.f -O2 -qinline-salary:taxes:expenses:benefits
-O2 -qinline=noauto -qinline+salary:taxes:benefits
In
this case, the procedures salary, taxes, and benefits are inlined. Besides, procedures that
are declared
with the inline specifier are also inlined. No other procedures are
inlined.-qinline+increase-decrease // invalid
-qinline=level=5+increase // invalid
However, you
can use -qinline separately. For example:-qinline+increase -qinline-decrease -qinline=noauto:level=5