Interprocedural Optimizations

See Interprocedural Optimizations (IPO) section for more information.

Option

Description

Default

-ip
 

Enables single-file interprocedural optimizations.
Enhances inline function expansion.

OFF

-ip_no_inlining
 

Disables full or partial inlining that would result from the -ip interprocedural optimizations. Requires -ip or -ipo.

OFF

-ip_no_pinlining
IA-32 only

Disables partial inlining. Requires -ip or -ipo.

OFF

-ipo
 

Enables interprocedural optimization across files. Compile all objects over entire program with multifile interprocedural optimizations.
Enhances multifile optimization; multifile inline function expansion, interprocedural constant and function characteristics propagation, monitoring module-level static variables; dead code elimination.

OFF

-ipo_c
 

Optimizes across files and produces a multifile object file. This option performs the same optimizations as -ipo, but stops prior to the final link stage, leaving an optimized object file.

OFF

-ipo_obj

Forces the generation of real object files. Requires
-ipo
.

OFF

-ipo_S
 

Optimizes across files and produces a multifile assembly file. This option performs the same optimizations as -ipo, but stops prior to the final link stage, leaving an optimized assembly file.

OFF

-inline_debug_info

Preserve the source position of inlined code instead of assigning the call-site source position to inlined code.

OFF

-Ob{0|1|2}

Controls the compiler's inline expansion. The amount of inline expansion performed varies as follows:

-Ob0: disable inlining

-Ob1: disables inlining unless -ip or -Ob2 is specified. Enables inlining of functions.

-Ob2: Enables inlining of any function. However, the compiler decides which functions are inlined. This option enables interprocedural optimizations and has the same effect as specifying the -ip option.

-Ob1

-nolib_inline

Disables inline expansion of intrinsic functions.

OFF