Generating Multiple IPO Object Files

In most cases, IPO generates a single object file for the link-time compilation. This behavior is not optimal 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 options to instruct 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.

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