# qopt-args-in-regs, Qopt-args-in-regs

Determines whether calls to routines are optimized by passing parameters in registers instead of on the stack. This option is deprecated and will be removed in a future release.

## Architecture Restrictions

Only available on IA-32 architecture. IA-32 support has been deprecated, and will be removed in a future release.

## Syntax

Linux: | -qopt-args-in-regs[=keyword]

macOS: | None

Windows: | /Qopt-args-in-regs[:keyword]

## Arguments

keyword | Specifies whether the optimization should be performed and under what conditions. Possible values are:
none | The optimization is not performed. No parameters are passed in registers. They are put on the stack.
seen | Causes parameters to be passed in registers when they are passed to routines whose definition can be seen in the same compilation unit.
all | Causes parameters to be passed in registers, whether they are passed to routines whose definition can be seen in the same compilation unit, or not. This value is only available on Linux* systems.

## Default

-qopt-args-in-regs=seen or /Qopt-args-in-regs:seen | Parameters are passed in registers when they are passed to routines whose definition is seen in the same compilation unit.

## Description

This option determines whether calls to routines are optimized by passing parameters in registers instead of on the stack. It also indicates the conditions when the optimization will be performed.

This option can improve performance for Application Binary Interfaces (ABIs) that require parameters to be passed in memory and compiled without interprocedural optimization (IPO).

Note that on Linux* systems, if all is specified, a small overhead may be paid when calling "unseen" routines that have not been compiled with the same option. This is because the call will need to go through a "thunk" to ensure that parameters are placed back on the stack where the callee expects them.

## IDE Equivalent

None

## Alternate Options

None

Parent topic: Advanced Optimization Options