Developer Guide and Reference

Contents

mcmodel

Tells the compiler to use a specific memory model to generate code and store data.
Architecture Restrictions
Only available on Intel® 64 architecture

Syntax

Linux:
-mcmodel
=
mem_model
macOS:
None
Windows:
None
Arguments
mem_model
Is the memory model to use. Possible values are:
small
Tells the compiler to restrict code and data to the first 2GB of address space. All accesses of code and data can be done with Instruction Pointer (IP)-relative addressing.
medium
Tells the compiler to restrict code to the first 2GB; it places no memory restriction on data. Accesses of code can be done with IP-relative addressing, but accesses of data must be done with absolute addressing.
large
Places no memory restriction on code or data. All accesses of code and data must be done with absolute addressing.
Default
-mcmodel=small
On systems using Intel® 64 architecture, the compiler restricts code and data to the first 2GB of address space. Instruction Pointer (IP)-relative addressing can be used to access code and data.
Description
This option tells the compiler to use a specific memory model to generate code and store data. It can affect code size and performance. If your program has
global and static
data with a total size smaller than 2GB,
-mcmodel=small
is sufficient.
Global and static data
larger than 2GB
requires
-mcmodel=medium
or
-mcmodel=large
. Allocation of memory larger than 2GB can be done with any setting of
-mcmodel
.
IP-relative addressing requires only 32 bits, whereas absolute