Microchip Technology SW006023-2 Data Sheet
MPLAB
®
XC32 C/C++ Compiler User’s Guide
DS51686E-page 74
2012 Microchip Technology Inc.
-fcse-skip-blocks
This is similar to -fcse-follow-jumps, but causes CSE to
follow jumps which conditionally skip over blocks. When CSE
encounters a simple if statement with no else clause,
-fcse-skip-blocks
follow jumps which conditionally skip over blocks. When CSE
encounters a simple if statement with no else clause,
-fcse-skip-blocks
causes CSE to follow the jump around the
body of the if.
-fexpensive-
optimizations
Perform a number of minor optimizations that are relatively
expensive.
expensive.
-ffunction-section
s
-fdata-sections
Place each function or data item into its own section in the output
file. The name of the function or the name of the data item
determines the section's name in the output file.
Only use these options when there are significant benefits for doing
so. When you specify these options, the assembler and linker may
create larger object and executable files and is also slower.
file. The name of the function or the name of the data item
determines the section's name in the output file.
Only use these options when there are significant benefits for doing
so. When you specify these options, the assembler and linker may
create larger object and executable files and is also slower.
-fgcse
Perform a global common subexpression elimination pass. This
pass also performs global constant and copy propagation.
pass also performs global constant and copy propagation.
-fgcse-lm
When -fgcse-lm is enabled, global common subexpression
elimination attempts to move loads which are only killed by stores
into themselves. This allows a loop containing a load/store
sequence to change to a load outside the loop, and a copy/store
within the loop.
elimination attempts to move loads which are only killed by stores
into themselves. This allows a loop containing a load/store
sequence to change to a load outside the loop, and a copy/store
within the loop.
-fgcse-sm
When -fgcse-sm is enabled, a store motion pass is run after
global common subexpression elimination. This pass attempts to
move stores out of loops. When used in conjunction with
-fgcse-lm
global common subexpression elimination. This pass attempts to
move stores out of loops. When used in conjunction with
-fgcse-lm
, loops containing a load/store sequence can change to
a load before the loop and a store after the loop.
-fmove-all-movable
s
Forces all invariant computations in loops to be moved outside the
loop.
loop.
-fno-defer-pop
Always pop the arguments to each function call as soon as that
function returns. The compiler normally lets arguments accumulate
on the stack for several function calls and pops them all at once.
function returns. The compiler normally lets arguments accumulate
on the stack for several function calls and pops them all at once.
-fno-peephole
-fno-peephole2
Disable machine specific peephole optimizations. Peephole
optimizations occur at various points during the compilation.
-fno-peephole
optimizations occur at various points during the compilation.
-fno-peephole
disables peephole optimization on machine
instructions, while -fno-peephole2 disables high level peephole
optimizations. To disable peephole entirely, use both options.
optimizations. To disable peephole entirely, use both options.
-foptimize-
register-move
-fregmove
Attempt to reassign register numbers in move instructions and as
operands of other simple instructions in order to maximize the
amount of register tying.
-fregmove
operands of other simple instructions in order to maximize the
amount of register tying.
-fregmove
and -foptimize-register-moves are the same
optimization.
-freduce-all-givs
Forces all general-induction variables in loops to be strength
reduced.
These options may generate better or worse code. Results are
highly dependent on the structure of loops within the source code.
reduced.
These options may generate better or worse code. Results are
highly dependent on the structure of loops within the source code.
-frename-registers
Attempt to avoid false dependencies in scheduled code by making
use of registers left over after register allocation. This optimization
most benefits processors with lots of registers. It can, however,
make debugging impossible, since variables no longer stay in a
“home register”.
use of registers left over after register allocation. This optimization
most benefits processors with lots of registers. It can, however,
make debugging impossible, since variables no longer stay in a
“home register”.
-frerun-cse-after-
loop
Rerun common subexpression elimination after loop optimizations
has been performed.
has been performed.
-frerun-loop-opt
Run the loop optimizer twice.
TABLE 3-12:
SPECIFIC OPTIMIZATION OPTIONS (CONTINUED)
Option
Definition