Enables optimizations for speed. This is the generally recommended optimization level. Vectorization is enabled at O2 and higher levels.
On systems using IA-32 architecture, some basic loop optimizations such as Distribution, Predicate Opt, Interchange, multi-versioning, and scalar replacements are performed.
This option also enables:
Inlining of intrinsics
Intra-file interprocedural optimization, which includes:
inlining
constant propagation
forward substitution
routine attribute propagation
variable address-taken analysis
dead static function elimination
removal of unreferenced variables
The following capabilities for performance gain:
constant propagation
copy propagation
dead-code elimination
global register allocation
global instruction scheduling and control speculation
loop unrolling
optimized code selection
partial redundancy elimination
strength reduction/induction variable simplification
variable renaming
exception handling optimizations
tail recursions
peephole optimizations
structure assignment lowering and optimizations
dead store elimination
This option may set other options, especially options that optimize for code speed. This is determined by the compiler, depending on which operating system and architecture you are using. The options that are set may change from release to release.
On Windows systems, this option is the same as the Ox option.
On Linux and Mac OS X systems, if -g is specified, O2 is turned off and O0 is the default unless O2 (or O1 or O3) is explicitly specified in the command line together with -g.
Many routines in the shared libraries are more highly optimized for Intel® microprocessors than for non-Intel microprocessors.
|