Determines whether function entry and exit points are instrumented.
IA-32, Intel® 64, IA-64 architectures
Linux and Mac OS X: |
-finstrument-functions -fno-instrument-functions |
Windows: |
/Qinstrument-functions /Qinstrument-functions- |
None
-fno-instrument-functions |
Function entry and exit points are not instrumented. |
This option determines whether function entry and exit points are instrumented. It may increase execution time.
The following profiling functions are called with the address of the current function and the address of where the function was called (its "call site"):
This function is called upon function entry:
On IA-32 architecture and Intel® 64 architecture:
void __cyg_profile_func_enter (void *this_fn,
void *call_site);
On IA-64 architecture:
void __cyg_profile_func_enter (void **this_fn,
void *call_site);
This function is called upon function exit:
On IA-32 architecture and Intel® 64 architecture:
void __cyg_profile_func_exit (void *this_fn,
void *call_site);
On IA-64 architecture:
void __cyg_profile_func_exit (void **this_fn,
void *call_site);
On IA-64 architecture, the additional de-reference of the function pointer argument is required to obtain the function entry point contained in the first word of the function descriptor for indirect function calls. The descriptor is documented in the Intel® Itanium® Software Conventions and Runtime Architecture Guide, section 8.4.2. You can find this design guide at web site http://www.intel.com
These functions can be used to gather more information, such as profiling information or timing information. Note that it is the user's responsibility to provide these profiling functions.
If you specify -finstrument-functions (Linux and Mac OS X) or /Qinstrument-functions (Windows), function inlining is disabled. If you specify -fno-instrument-functions or /Qinstrument-functions-, inlining is not disabled.
On Linux and Mac OS X systems, you can use the following attribute to stop an individual function from being instrumented:
__attribute__((__no_instrument_function__))
It also stops inlining from being disabled for that individual function.
This option is provided for compatibility with gcc.
None