# Disable Passing Arguments in Registers Instead of On the Stack

You can specify an option that causes the compiler to pass arguments in registers rather than on the stack. This can yield faster code.

However, doing this may require the compiler to create an additional entry point for any function that can be called outside the code being compiled.

In many cases, this will lead to an increase in code size. To prevent this increase in code size, you can disable this optimization.

Options to specify:

Linux* and macOS*: | -qopt-args-in-regs=none
Windows*: | /Qopt-args-in-regs:none

Advantages of this method: | Disabling this optimization can reduce code size.
Disadvantages of this method: | The amount of code size saved may be small when compared to the corresponding performance loss of disabling the optimization.

Notes:

If you do not specify "none" for option [q or Q]opt-args-in-regs, the default behavior for the option is that parameters are passed in registers when they are passed to routines whose definition is seen in the same compilation unit.

Depending on code characteristics, this option can sometimes increase binary size.

Parent topic: Methods to Optimize Code Size