Microchip Technology SW006023-2 Data Sheet
![Microchip Technology](https://files.manualsbrain.com/attachments/cf42c3c895ef469f06d2e47e97fd98d738fcf5cf/common/fit/150/50/7340124dc8aa983aaf764094e2f06faab86f306c03111c5817f7e4e53fb2/brand_logo.gif)
MPLAB
®
XC32 C/C++ Compiler User’s Guide
DS51686E-page 84
2012 Microchip Technology Inc.
-finstrument-
functions
Generate instrumentation calls for entry and exit to functions. Just
after function entry and just before function exit, the following
profiling functions are called with the address of the current
function and its call site.
void _ _cyg_profile_func_enter
after function entry and just before function exit, the following
profiling functions are called with the address of the current
function and its call site.
void _ _cyg_profile_func_enter
(void *this_fn, void *call_site);
void _ _cyg_profile_func_exit
(void *this_fn, void *call_site);
The first argument is the address of the start of the current
function, which may be looked up exactly in the symbol table.
The profiling functions should be provided by the user.
Function instrumentation requires the use of a Frame Pointer.
Some optimization levels disable the use of the Frame Pointer.
Using -fno-omit-frame-pointer prevents this.
This instrumentation is also done for functions expanded inline in
other functions. The profiling calls indicates where, conceptually,
the inline function is entered and exited. This means that
addressable versions of such functions must be available. If all
your uses of a function are expanded inline, this may mean an
additional expansion of code size. If you use extern inline in
your C code, an addressable version of such functions must be
provided.
A function may be given the attribute
The first argument is the address of the start of the current
function, which may be looked up exactly in the symbol table.
The profiling functions should be provided by the user.
Function instrumentation requires the use of a Frame Pointer.
Some optimization levels disable the use of the Frame Pointer.
Using -fno-omit-frame-pointer prevents this.
This instrumentation is also done for functions expanded inline in
other functions. The profiling calls indicates where, conceptually,
the inline function is entered and exited. This means that
addressable versions of such functions must be available. If all
your uses of a function are expanded inline, this may mean an
additional expansion of code size. If you use extern inline in
your C code, an addressable version of such functions must be
provided.
A function may be given the attribute
n
o_instrument_function
, in which case this instrumentation
is not done.
-fno-ident
Ignore the #ident directive.
-fpack-struct
Pack all structure members together without holes. Usually you
would not want to use this option, since it makes the code
sub-optimal, and the offsets of structure members won’t agree with
system libraries.
would not want to use this option, since it makes the code
sub-optimal, and the offsets of structure members won’t agree with
system libraries.
-fpcc-struct-
return
Return short struct and union values in memory like longer
ones, rather than in registers. This convention is less efficient, but
it has the advantage of allowing capability between 32-bit compiled
files and files compiled with other compilers.
Short structures and unions are those whose size and alignment
match that of an integer type.
ones, rather than in registers. This convention is less efficient, but
it has the advantage of allowing capability between 32-bit compiled
files and files compiled with other compilers.
Short structures and unions are those whose size and alignment
match that of an integer type.
-fno-short-double
By default, the compiler uses a double type equivalent to float.
This option makes double equivalent to long double. Mixing
this option across modules can have unexpected results if
modules share double data either directly through argument
passage or indirectly through shared buffer space. Libraries
provided with the product function with either switch setting.
This option makes double equivalent to long double. Mixing
this option across modules can have unexpected results if
modules share double data either directly through argument
passage or indirectly through shared buffer space. Libraries
provided with the product function with either switch setting.
-fshort-enums
Allocate to an enum type only as many bytes as it needs for the
declared range of possible values. Specifically, the enum type is
equivalent to the smallest integer type that has enough room.
declared range of possible values. Specifically, the enum type is
equivalent to the smallest integer type that has enough room.
-fverbose-asm
-fno-verbose-asm
Put extra commentary information in the generated assembly code
to make it more readable.
-fno-verbose-asm
to make it more readable.
-fno-verbose-asm
, the default, causes the extra information to
be omitted and is useful when comparing two assembler files.
-fvolatile
Consider all memory references through pointers to be volatile.
-fvolatile-global
Consider all memory references to external and global data items
to be volatile. The use of this switch has no effect on static data.
to be volatile. The use of this switch has no effect on static data.
-fvolatile-static
Consider all memory references to static data to be volatile.
TABLE 3-18:
CODE GENERATION CONVENTION OPTIONS (CONTINUED)
Option
Definition