Generating Multiple IPO Object Files

For the most part, IPO generates a single object file for the link-time compilation. This can be clumsy for very large applications, perhaps even making it impossible to use -ipo (Linux*) or /Qipo (Windows*) on the application. The compiler provides two ways to avoid this problem. The first way is a size-based heuristic, which automatically causes the compiler to generate multiple object files for large link-time compilations.  

The second way is using one of the following explicit command line controls for that tell the compiler to perform multi-object IPO:

Windows*

Linux*

Description

/QipoN

-ipoN

For this option, N indicates the number of object files to generate.

For more information, see the following topic:

  • -ipo compiler option

/Qipo-separate

-ipo-separate

Instructs the compiler to generate a separate IPO object file for each source file.

For more information, see the following topic:

These options are alternatives to the -ipo (Linux) or /Qipo (Windows) option; they indicate an IPO compilation. Explicitly requesting a multi-object IPO compilation turns the size-based heuristic off.

The number of files generated by the link-time compilation is invisible to the user unless either the -ipo-c or -ipo-S (Linux) or /Qipo-c or /Qipo-S (Windows) option is used.  In this case the compiler appends a number to the file name.  For example, consider this command line:

Platform

Example Command

Linux

ifort a.o b.o c.o -ipo-separate -ipo-c

Windows

ifort a.obj b.obj c.obj /Qipo-separate /Qipo-c

On Windows, the example command generates ipo_out.obj, ipo_out1.obj, ipo_out2.obj, and ipo_out3.obj. On Linux, the file names will be as listed; however, the file extension will be .o.

In the object files, the first object file contains global symbols. The other object files correspond to the source files. This naming convention is also applied to user-specified names. For example:

Platform

Example Command

Linux

ifort a.o b.o c.o -ipo-separate -ipo-c -o appl.o

Windows

ifort a.obj b.obj c.obj /Qipo-separate /Qipo-c -o appl.obj

On Windows, the example command will generate appl.obj, appl1.obj, appl2.obj, and appl3.obj; while, on Linux, the file names will be as listed; however, the file extension will be .o.