This section lists conditions that inhibit the inlining of
subroutines and functions, whether from a library or source file.
Many constructs that prevent inlining will also stop or restrict
IPA.
See Section 7.4.6 for other notes on the use
of the /inline
and /ipa
command qualifiers
and directives.
Conditions that inhibit inlining:
- Dummy and actual arguments are mismatched in type or
class.
- Missing dummy parameter.
- Missing actual parameter and the corresponding dummy
parameter is an array.
- Actual parameter is a nonscalar expression (for example,
A+B, where A and B are arrays).
- Number of actual parameters differs from the number of
dummy parameters.
- The size of an array actual parameter differs from the
array dummy parameter AND the arrays cannot be linearized.
- Subprogram is too long ( > 600 lines).
- Subprogram has a SAVE statement.
- Subprogram has variables that are live-on-entry, even if
they are not in explicit SAVE statements.
- Subprogram has a DATA statement and DATA implies SAVE and
the variable is live-on-entry.
- Calling routine and called routine have mismatched COMMON
declarations.
- Called routine has EQUIVALENCE statements. (Some of these
can be handled.)
- Called routine has NAMELIST statements.
- Called routine has dynamic arrays.
- CALL to be expanded has alternate return parameters.
- Subprogram to be inlined contains a CALL with a subroutine
or function name as an argument.
- Subprogram contains unsubscripted array references in I/O
statements.
- Subprogram to be inlined contains POINTER statements.
Previous Page | Next Page | Contents | Index |
Command-Line Qualifiers