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.