# ftls-model

Changes the thread local storage (TLS) model.

## Syntax

Linux: | -ftls-model=model

macOS: | -ftls-model=model

Windows: | None

## Arguments

model | Determines the TLS model used by the compiler. Possible values are:
global-dynamic | Generates a generic TLS code. The code can be used everywhere and the code can access variables defined anywhere else. This setting causes the largest size code to be generated and uses the most run time to produce.
local-dynamic | Generates an optimized TLS code. To use this setting, the thread-local variables must be defined in the same object in which they are referenced.
initial-exec | Generates a restrictive, optimized TLS code. To use this setting, the thread-local variables accessed must be defined in one of the modules available to the program.
local-exec | Generates the most restrictive TLS code. To use this setting, the thread-local variables must be defined in the executable.

## Default

OFF | The compiler uses default heuristics when determining the thread-local storage model.

## Description

This option changes the thread local storage (TLS) model. Thread-local storage is a mechanism by which variables are allocated in a way that causes one instance of the variable per extant thread.

For more information on the thread-storage localization models, see the appropriate gcc* documentation.

For more information on the thread-storage localization models, see the appropriate clang* documentation.

## IDE Equivalent

None

## Alternate Options

None

Parent topic: Advanced Optimization Options