at the beginning of statements, and to keep them roughly in place
throughout compilation, using them to guide the output of @code{is_stmt}
markers in the line number table. This is enabled by default when
-compiling with optimization (@option{-Os}, @option{-O}, @option{-O2},
+compiling with optimization (@option{-Os}, @option{-O1}, @option{-O2},
@dots{}), and outputting DWARF 2 debug information at the normal level.
@item -gvariable-location-views
As compared to @option{-O}, this option increases both compilation time
and the performance of the generated code.
-@option{-O2} turns on all optimization flags specified by @option{-O}. It
+@option{-O2} turns on all optimization flags specified by @option{-O1}. It
also turns on the following optimization flags:
@c Please keep the following list alphabetized!
is active, two passes are performed and the second is scheduled after
loop unrolling.
-This option is enabled by default at optimization levels @option{-O},
+This option is enabled by default at optimization levels @option{-O1},
@option{-O2}, @option{-O3}, @option{-Os}.
@item -ffp-contract=@var{style}
is used in all functions. Several targets always omit the frame pointer in
leaf functions.
-Enabled by default at @option{-O} and higher.
+Enabled by default at @option{-O1} and higher.
@item -foptimize-sibling-calls
@opindex foptimize-sibling-calls
linker support it. Use @option{-fno-merge-constants} to inhibit this
behavior.
-Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}.
+Enabled at levels @option{-O1}, @option{-O2}, @option{-O3}, @option{-Os}.
@item -fmerge-all-constants
@opindex fmerge-all-constants
independently. This normally generates better code for those types,
but may make debugging more difficult.
-Enabled at levels @option{-O}, @option{-O2}, @option{-O3},
+Enabled at levels @option{-O1}, @option{-O2}, @option{-O3},
@option{-Os}.
@item -fsplit-wide-types-early
@opindex fauto-inc-dec
Combine increments or decrements of addresses with memory accesses.
This pass is always skipped on architectures that do not have
-instructions to support this. Enabled by default at @option{-O} and
+instructions to support this. Enabled by default at @option{-O1} and
higher on architectures that support this.
@item -fdce
@opindex fdce
Perform dead code elimination (DCE) on RTL@.
-Enabled by default at @option{-O} and higher.
+Enabled by default at @option{-O1} and higher.
@item -fdse
@opindex fdse
Perform dead store elimination (DSE) on RTL@.
-Enabled by default at @option{-O} and higher.
+Enabled by default at @option{-O1} and higher.
@item -fif-conversion
@opindex fif-conversion
some tricks doable by standard arithmetics. The use of conditional execution
on chips where it is available is controlled by @option{-fif-conversion2}.
-Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}, but
+Enabled at levels @option{-O1}, @option{-O2}, @option{-O3}, @option{-Os}, but
not with @option{-Og}.
@item -fif-conversion2
Use conditional execution (where available) to transform conditional jumps into
branch-less equivalents.
-Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}, but
+Enabled at levels @option{-O1}, @option{-O2}, @option{-O3}, @option{-Os}, but
not with @option{-Og}.
@item -fdeclone-ctor-dtor
to exploit instruction slots available after delayed branch
instructions.
-Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os},
+Enabled at levels @option{-O1}, @option{-O2}, @option{-O3}, @option{-Os},
but not at @option{-Og}.
@item -fschedule-insns
@item -ftree-reassoc
@opindex ftree-reassoc
Perform reassociation on trees. This flag is enabled by default
-at @option{-O} and higher.
+at @option{-O1} and higher.
@item -fcode-hoisting
@opindex fcode-hoisting
@item -ftree-forwprop
@opindex ftree-forwprop
Perform forward propagation on trees. This flag is enabled by default
-at @option{-O} and higher.
+at @option{-O1} and higher.
@item -ftree-fre
@opindex ftree-fre
between FRE and PRE is that FRE only considers expressions
that are computed on all paths leading to the redundant computation.
This analysis is faster than PRE, though it exposes fewer redundancies.
-This flag is enabled by default at @option{-O} and higher.
+This flag is enabled by default at @option{-O1} and higher.
@item -ftree-phiprop
@opindex ftree-phiprop
Perform hoisting of loads from conditional pointers on trees. This
-pass is enabled by default at @option{-O} and higher.
+pass is enabled by default at @option{-O1} and higher.
@item -fhoist-adjacent-loads
@opindex fhoist-adjacent-loads
@item -ftree-copy-prop
@opindex ftree-copy-prop
Perform copy propagation on trees. This pass eliminates unnecessary
-copy operations. This flag is enabled by default at @option{-O} and
+copy operations. This flag is enabled by default at @option{-O1} and
higher.
@item -fipa-pure-const
@opindex fipa-pure-const
Discover which functions are pure or constant.
-Enabled by default at @option{-O} and higher.
+Enabled by default at @option{-O1} and higher.
@item -fipa-reference
@opindex fipa-reference
Discover which static variables do not escape the
compilation unit.
-Enabled by default at @option{-O} and higher.
+Enabled by default at @option{-O1} and higher.
@item -fipa-reference-addressable
@opindex fipa-reference-addressable
Discover read-only, write-only and non-addressable static variables.
-Enabled by default at @option{-O} and higher.
+Enabled by default at @option{-O1} and higher.
@item -fipa-stack-alignment
@opindex fipa-stack-alignment
@code{cold}, @code{noreturn}, static constructors or destructors) are
identified. Cold functions and loop less parts of functions executed once are
then optimized for size.
-Enabled by default at @option{-O} and higher.
+Enabled by default at @option{-O1} and higher.
@item -fipa-modref
@opindex fipa-modref
Perform interprocedural mod/ref analysis. This optimization analyzes the side
effects of functions (memory locations that are modified or referenced) and
enables better optimization across the function call boundary. This flag is
-enabled by default at @option{-O} and higher.
+enabled by default at @option{-O1} and higher.
@item -fipa-cp
@opindex fipa-cp
@item -ftree-sink
@opindex ftree-sink
Perform forward store motion on trees. This flag is
-enabled by default at @option{-O} and higher.
+enabled by default at @option{-O1} and higher.
@item -ftree-bit-ccp
@opindex ftree-bit-ccp
@opindex ftree-ccp
Perform sparse conditional constant propagation (CCP) on trees. This
pass only operates on local scalar variables and is enabled by default
-at @option{-O} and higher.
+at @option{-O1} and higher.
@item -fssa-backprop
@opindex fssa-backprop
Propagate information about uses of a value up the definition chain
in order to simplify the definitions. For example, this pass strips
sign operations if the sign of a value never matters. The flag is
-enabled by default at @option{-O} and higher.
+enabled by default at @option{-O1} and higher.
@item -fssa-phiopt
@opindex fssa-phiopt
@item -ftree-dce
@opindex ftree-dce
Perform dead code elimination (DCE) on trees. This flag is enabled by
-default at @option{-O} and higher.
+default at @option{-O1} and higher.
@item -ftree-builtin-call-dce
@opindex ftree-builtin-call-dce
propagation, redundancy elimination, range propagation and expression
simplification) based on a dominator tree traversal. This also
performs jump threading (to reduce jumps to jumps). This flag is
-enabled by default at @option{-O} and higher.
+enabled by default at @option{-O1} and higher.
@item -ftree-dse
@opindex ftree-dse
Perform dead store elimination (DSE) on trees. A dead store is a store into
a memory location that is later overwritten by another store without
any intervening loads. In this case the earlier store can be deleted. This
-flag is enabled by default at @option{-O} and higher.
+flag is enabled by default at @option{-O1} and higher.
@item -ftree-ch
@opindex ftree-ch
Perform loop header copying on trees. This is beneficial since it increases
effectiveness of code motion optimizations. It also saves one jump. This flag
-is enabled by default at @option{-O} and higher. It is not enabled
+is enabled by default at @option{-O1} and higher. It is not enabled
for @option{-Os}, since it usually increases code size.
@item -ftree-loop-optimize
@opindex ftree-loop-optimize
Perform loop optimizations on trees. This flag is enabled by default
-at @option{-O} and higher.
+at @option{-O1} and higher.
@item -ftree-loop-linear
@itemx -floop-strip-mine
only its initial value and the number of loop iterations, replace uses of
the final value by such a computation, provided it is sufficiently cheap.
This reduces data dependencies and may allow further simplifications.
-Enabled by default at @option{-O} and higher.
+Enabled by default at @option{-O1} and higher.
@item -fivopts
@opindex fivopts
use/single def temporaries are replaced at their use location with their
defining expression. This results in non-GIMPLE code, but gives the expanders
much more complex trees to work on resulting in better RTL generation. This is
-enabled by default at @option{-O} and higher.
+enabled by default at @option{-O1} and higher.
@item -ftree-slsr
@opindex ftree-slsr
Perform straight-line strength reduction on trees. This recognizes related
expressions involving multiplications and replaces them by less expensive
-calculations when possible. This is enabled by default at @option{-O} and
+calculations when possible. This is enabled by default at @option{-O1} and
higher.
@item -ftree-vectorize
Reorder basic blocks in the compiled function in order to reduce number of
taken branches and improve code locality.
-Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}.
+Enabled at levels @option{-O1}, @option{-O2}, @option{-O3}, @option{-Os}.
@item -freorder-blocks-algorithm=@var{algorithm}
@opindex freorder-blocks-algorithm
put all often executed code together, minimizing the number of branches
executed by making extra copies of code.
-The default is @samp{simple} at levels @option{-O}, @option{-Os}, and
+The default is @samp{simple} at levels @option{-O1}, @option{-Os}, and
@samp{stc} at levels @option{-O2}, @option{-O3}.
@item -freorder-blocks-and-partition
This pass only applies to certain targets that cannot explicitly represent
the comparison operation before register allocation is complete.
-Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}.
+Enabled at levels @option{-O1}, @option{-O2}, @option{-O3}, @option{-Os}.
@item -fcprop-registers
@opindex fcprop-registers
perform a copy-propagation pass to try to reduce scheduling dependencies
and occasionally eliminate the copy.
-Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}.
+Enabled at levels @option{-O1}, @option{-O2}, @option{-O3}, @option{-Os}.
@item -fprofile-correction
@opindex fprofile-correction