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:
|
/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.