6.6.1.17 -mpa=n
Enable the procedure abstraction optimization up to level n. If n is zero, the optimization is disabled. If n is 1, first level of abstraction is allowed; that is, instruction sequences in the source code may be abstracted into a subroutine. If n is 2, a second level of abstraction is allowed; that is, instructions that were put into a subroutine in the first level may be abstracted into a subroutine one level deeper. This pattern continues for larger values of n. The net effect is to limit the subroutine call nesting depth to a maximum of n.
Optimization levels depend on the compiler edition (see 19 Optimizations).
-mpa
can be
harder to debug.
The procedure abstractor is invoked as a separate phase of compilation,
after the production of an assembly file. This phase does not optimize across
translation units. When the procedure-optimizing phase is enabled, inline assembly code
must be limited to valid machine instructions. Invalid machine instructions or
instruction sequences, or assembler directives (sectioning directives, macros, include
files, etc.), must not be used, or the procedure abstraction phase will fail, inhibiting
the creation of an output file.