Developer Guide and Reference

ID 767251
Date 10/31/2024
Public
Document Table of Contents

mcmodel

Tells the compiler to use a specific memory model to generate code and store data.

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 COMMON blocks and local data with a total size smaller than 2GB, -mcmodel=small is sufficient. COMMONs larger than 2GB require-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.

IDE Equivalent

None

Alternate Options

None

Example

The following example shows how to compile using -mcmodel:

ifx -shared-intel -mcmodel=medium -o prog prog.f

See Also