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
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 addressing requires 64-bits. IP-relative addressing is somewhat
faster. So, the
small
memory model has the least
impact on performance.
This content is specific to C++; it does not apply to
DPC++
.When you specify option
-mcmodel=medium
or
-mcmodel=large
, it sets
option
-shared-intel
. This
ensures that the correct dynamic versions of the Intel run-time libraries are
used.
If you specify option
-static-intel
while
-mcmodel=medium
or
-mcmodel=large
is set,
an error will be displayed.
IDE Equivalent
None
Alternate Options
None
Example
The following example shows how to compile using
-mcmodel
:
This content is specific to C++; it does not apply to
DPC++
.icx -shared-intel -mcmodel=medium -o prog prog.c