Microchip Technology SW006023-2 Data Sheet

Page of 238
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
 causes CSE to follow the jump around the 
body of the if.
-fexpensive-
 optimizations
Perform a number of minor optimizations that are relatively 
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.
-fgcse
Perform a global common subexpression elimination pass. This 
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.
-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
, 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.
-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.
-fno-peephole
-fno-peephole2
Disable machine specific peephole optimizations. 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.
-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
 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.
-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”.
-frerun-cse-after-
 loop
Rerun common subexpression elimination after loop optimizations 
has been performed.
-frerun-loop-opt
Run the loop optimizer twice.
TABLE 3-12:
SPECIFIC OPTIMIZATION OPTIONS (CONTINUED)
Option
Definition