# optimization_parameter

Passes certain information about a function to the optimizer.

## Syntax

Linux* and macOS*:

#pragma intel optimization_parameter target_arch=<CPU>

#pragma intel optimization_parameter inline-max-total-size=n

#pragma intel optimization_parameter inline-max-per-routine=n

Windows*:

#pragma [intel] optimization_parameter target_arch=<CPU>

#pragma [intel] optimization_parameter inline-max-total-size=n

#pragma [intel] optimization_parameter inline-max-per-routine=n

## Arguments

target_arch=<CPU> | For the list of CPUs, see compiler options -m (or /arch) and [Q]x.
inline-max-per-routine=n | Specifies the maximum number of times the inliner may inline into the routine. n is one of the following: A non-negative integer constant that specifies the maximum number of times the inliner may inline into the function. If you specify zero, no inlining is done into the function. The keyword unlimited, which means that there is no limit to the number of times the inliner may inline into the function. For more information, see option [Q]inline-max-per-routine.
inline-max-total-size=n | Specifies how much larger a function can normally grow when inline expansion is performed. n is one of the following: A non-negative integer constant that specifies the permitted increase in the function's size when inline expansion is performed. If you specify zero, no inlining is done into the function. The keyword unlimited, which means that there is no limit to the size a function may grow when inline expansion is performed. For more information, see option [Q]inline-max-total-size.

## Description

The intel optimization_parameter target_arch pragma controls the -m (or /arch) option settings at the function level, overriding the option values specified at the command-line.

Place #pragma intel optimization_parameter target_arch=<CPU> at the head of a function to get the compiler to target that function for a specified instruction set. The pragma works like the -m (or /arch) and [Q]x options, but applies only to the function before which it is placed.

The pragmas intel optimization_parameter inline-max-total-size=n and intel optimization_parameter inline-max-per-routine=n specify information used during inlining into a function.

## Examples

Example: Targeting code for Intel® Advanced Vector Extensions (Intel® AVX) processors
    For C++:
    icc -mAVX foo.c   // on Linux* andmacOS*
     -mAVX foo.c   // on Linux* and macOS*
    For DPC++:
     -mAVX foo.c   // on Linux* andmacOS*

The following code targets just the function `bar` for Intel® AVX processors, regardless of the command line options used.

Example: Targeting a function for Intel® Advanced Vector Extensions (Intel® AVX) processors
    #pragma intel optimization_parameter target_arch=AVX
    void bar() { ... }

Parent topic: Intel-Specific Pragma Reference

## See Also

arch compiler option
m compiler option
Processor Targeting
ax, Qax compiler option
inline-max-per-routine, Qinline-max-per-routine compiler option
inline-max-total-size, Qinline-max-total-size compiler option