# finstrument-functions, Qinstrument-functions

Determines whether routine entry and exit points are instrumented.

## Syntax

Linux: | -finstrument-functions -fno-instrument-functions

macOS: | -finstrument-functions -fno-instrument-functions

Windows: | /Qinstrument-functions /Qinstrument-functions-

## Arguments

None

## Default

-fno-instrument-functions or /Qinstrument-functions- | Routine entry and exit points are not instrumented.

## Description

This option determines whether routine entry and exit points are instrumented. It may increase execution time.

The following profiling functions are called with the address of the current routine and the address of where the routine was called (its "call site"):

- This function is called upon routine entry:

  -     void __cyg_profile_func_enter (void *this_fn,

        void *call_site);

- This function is called upon routine exit:

  -     void __cyg_profile_func_exit (void *this_fn,

        void *call_site);

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 macOS) or /Qinstrument-functions (Windows*), routine inlining is disabled. If you specify -fno-instrument-functions or /Qinstrument-functions-, inlining is not disabled.

This option is provided for compatibility with gcc.

## IDE Equivalent

None

## Alternate Options

None

Parent topic: Profile Guided Optimization Options