Microchip Technology SW006023-2N Data Sheet

Page of 238
Compiler Command Line Driver
 2012 Microchip Technology Inc.
DS51686E-page 83
3.9.12
Options for Code Generation Conventions
Options of the form -fflag specify machine-independent flags. Most flags have both 
positive and negative forms. The negative form of -ffoo would be -fno-foo. In the 
table below, only one of the forms is listed (the one that is not the default).
TABLE 3-18:
CODE GENERATION CONVENTION OPTIONS
Option
Definition
-fargument-alias 
-fargument-noalias 
-fargument-
 noalias-global 
Specify the possible relationships among parameters and between 
parameters and global data.
-fargument-alias
 specifies that arguments (parameters) may 
alias each other and may alias global storage.
-fargument-noalias
 specifies that arguments do not alias 
each other, but may alias global storage.
-fargument-noalias-global
 specifies that arguments do not 
alias each other and do not alias global storage.
Each language automatically uses whatever option is required by 
the language standard. You should not need to use these options 
yourself.
-fcall-saved-reg
Treat the register named reg as an allocatable register saved by 
functions. It may be allocated even for temporaries or variables 
that live across a call. Functions compiled this way saves and 
restores the register reg if they use it.
It is an error to use this flag with the Frame Pointer or Stack 
Pointer. Use of this flag for other registers that have fixed 
pervasive roles in the machine’s execution model produces 
disastrous results. 
A different sort of disaster results from the use of this flag for a 
register in which function values are returned. 
This flag should be used consistently through all modules.
-fcall-used-reg
Treat the register named reg as an allocatable register that is 
clobbered by function calls. It may be allocated for temporaries or 
variables that do not live across a call. Functions compiled this way 
do not save and restore the register reg
It is an error to use this flag with the Frame Pointer or Stack 
Pointer. Use of this flag for other registers that have fixed 
pervasive roles in the machine’s execution model produces 
disastrous results.
This flag should be used consistently through all modules.
-ffixed-reg
Treat the register named reg as a fixed register. Generated code 
should never refer to it (except perhaps as a Stack Pointer, Frame 
Pointer or in some other fixed role).
reg
 must be the name of a register (e.g., -ffixed-$0).