5.7.7.35 Pa Option

The -mpa option enables Procedural Abstraction optimizationsfor Cortex®-M devices and the Thumb/2 instruction sets. This optimization is available only for licensed compilers.

Procedural Abstraction finds common blocks of assembly code instructions and factors them out into a new callable procedures. It then replaces each instance of the block of instructions with a call to this new procedure. This is essentially a reverse inlining process.

Important:

Ensure that the same form of this option is specified at compile time for all modules. Additionally, the option must be specified at link time.

This option is useable when linking with response files and is compatible with link-time optimizations (-flto).

Important: Procedural Abstraction is an aggressive code-size optimization. As such, there is a negative impact to both debug-ability and performance of the compiled application.

Procedural abstraction can be disabled on a per-function basis by using the nopa attribute when this option is in effect.

The -mno-pa option disables procedural abstraction optimizations. This is the default action if no option is specified.