# fnsplit, Qfnsplit

Enables function splitting.

## Syntax

Linux: | -fnsplit[=n] -no-fnsplit

macOS: | None

Windows: | /Qfnsplit[:n] /Qfnsplit-

## Arguments

n | Is an optional positive integer indicating the threshold number. The blocks can be placed into a different code segment if they are only reachable via a conditional branch whose taken probability is less than the specified n. Branch taken probability is heuristically calculated by the compiler and can be observed in assembly listings. The range for n is 0 <= n <= 100.

## Default

OFF | Function splitting is not enabled. However, function grouping is still enabled.

## Description

This option enables function splitting. If you specify [Q]fnsplit with no n, you must also specify option [Q]prof-use, or the option will have no effect and no function splitting will occur.

If you specify n, function splitting is enabled and you do not need to specify option [Q]prof-use.

To disable function splitting when you use option [Q]prof-use, specify /Qfnsplit- (Windows*) or -no-fnsplit (Linux*).

### Note

Function splitting is generally not supported when exception handling is turned on for C/C++ routines in the stack of called routines. See also -fexceptions (Linux*) and the C/C++ option /EH (Windows*).

## IDE Equivalent

Visual Studio: Code Generation > Disable Function Splitting

Eclipse: None

Xcode: None

## Alternate Options

Linux: -freorder-blocks-and-partition (a gcc option)

Windows: None

Parent topic: Profile Guided Optimization Options