3.6.6.15 No-pa-outline-calls Option
The -mno-pa-outline-calls
option prevents procedural abstraction
optimizations from outlining code that contains function calls.
The compiler performs various checks to ensure it is safe to outline code blocks when
procedural abstraction optimizations are enabled. One such check is to ensure that any
routines called in a block do not access objects on the stack, such as stack-based
arguments or return values. If a call to such a routine is outlined, the additional call
to the abstracted routine inserted by the compiler (which will alter the stack pointer
when the return address is pushed) can in some situations result in the wrong stack data
being read. The compiler will not outline code that contains calls to routines that
access the stack, but will allow calls to be outlined at other times. The
-mno-pa-outline-calls
option disables procedural abstraction of
code that contains calls, even when the compiler believes that such optimizations are
safe.