# Compiler Directed Inline Expansion of Functions

Without directions from the user, the compiler attempts to estimate what functions should be inlined to optimize application performance. See Inline Expansion of Functions for more information.

The following options are useful in situations where an application can benefit from user function inlining but does not need specific direction about inlining limits.

Option | Effect
--- | ---
inline-level(Linux* and macOS*) or Ob (Windows*) | Specifies the level of inline function expansion. Note that the option /Ob2 on Windows* is equivalent to -inline-level=2 on Linux* and macOS*. Allowed values are 0, 1, and 2.
[Q]ip-no-inlining | Disables only inlining enabled by the [Q]ip, [Q]ipo, or Ob2 options.
[Q]ip-no-pinlining | Disables partial inlining enabled by the [Q]ip or [Q]ipo options. No other IPO optimizations are disabled.
fno-builtin (Linux* and macOS*) or Oi- (Windows) | Disables inlining for intrinsic functions. Disables the by-name recognition support of intrinsic functions and the resulting optimizations. Use this option if you redefine standard library routines with your own version and your version of the routine has the same name as the standard library routine. By default, the compiler automatically inlines (expands) a number of standard and math library functions at the point of the call to that function, which usually results in faster computation. Many routines in the libirc, libm, or svml library are more highly optimized for Intel microprocessors than for non-Intel microprocessors.
setting inline-debug-info for the debug option | Indicates that the source position information for an inlined function should be retained, rather than replaced, by that of the call which is being inlined.

Parent topic: Inline Expansion of Functions

## See Also

debug (Linux* and macOS*)
debug (Windows*)
Zi, Z7, ZI
fbuiltin, Oi
inline-level, Ob
ip, Qip
ip-no-pinlining, Qip-no-pinlining
ipo, Qipo