xilink6: error error_during_IPO_compilation: problem during multi-file optimization compilation (code 4)

xilink6: error error_during_IPO_compilation: problem during multi-file optimization compilation (code 4)

hi all,

i am using intel c++ compiller for Fast Fourier Transforms,while i am compiling the code i did not get any erroes but while i am linking the code with intel math kernel library(MKL) i got the following erros.

(0): internal error: backend signals
xilink6: error error_during_IPO_compilation: problem during multi-file optimization compilation (code 4)
xilink6: error error_during_IPO_compilation: problem during multi-file optimization compilation (code 4)
Error executing xilink6.exe.

so,please any one can help me to solve that errors

thanking you.

4 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Normally, the IPO linking error message is a consequence of earlier reported errors. In case your problem is associated with linking MKL, please look up any relevant posts on the MKL forum. Among other things, reading the discussions will give you an idea of the detail required in your follow-up.

Here is an excerpt out of the icc help page. I would suggest toexperiment with -ipoN option (try N being bigger or equal than 2) and see what you get.
======================== help excerpt ======================================================
IPO for Large Programs

In most cases, IPO generates a single object file for the link-time compilation. This behavior is not optimal for very large programs, perhaps even making it impossible to use -ipo (Linux* and Mac OS* X) or /Qipo (Windows*) on the application.

The compiler provides two methods to avoid this problem. The first method is an automatic size-based heuristic, which causes the compiler to generate multiple object files for large link-time compilations. The second method is to manually instruct the compiler to perform multi-object IPO.

  • Use the -ipoN (Linux and Mac OS X) or /QipoN (Windows) option and pass an integer value in the place of N.

  • Use the -ipo-separate (Linux and Mac OS X) or /Qipo-separate (Windows) option.
    The number of true object files generated by the link-time compilation is invisible to the user unless either the -ipo-c or -ipo-S (Linux and Mac OS X) or /Qipo-c or /Qipo-S (Windows) option is used.

Regardless of the method used, it is best to use the compiler defaults first and examine the results. If the defaults do not provide the expected results then experiment with generating more object files.

You can use the -ipo-jobs (Linux and Mac OS X) or /Qipo-jobs (Windows) option to control the number of commands, or jobs, executed during parallel builds.

Using -ipoN or /QipoN to Create Multiple Object Files

If you specify -ipo0 (Linux and Mac OS X) or /Qipo0 (Windows), which is the same as not specifying a value, the compiler uses heuristics to determine whether to create one or more object files based on the expected size of the application. The compiler generates one object file for small applications, and two or more object files for large applications. If you specify any value greater than 0, the compiler generates that number of object files, unless the value you pass a value that exceeds the number of source files. In that case, the compiler creates one object file for each source file then stops generating object files.

The following example commands demonstrate how to use -ipo2 (Linux and Mac OS X) or /Qipo2 (Windows) to compile large programs.

Operating System

Example Command

Linux and Mac OS X

icpc -ipo2 -c a.cpp b.cpp


icl /Qipo2 /c a.cpp b.cpp

Because the example command shown above, the compiler generates object files using an OS-dependent naming convention. On Linux and Mac OS X, the example command results in object files named ipo_out.o, ipo_out1.o, ipo_out2.o, and ipo_out3.o. On Windows, the file names follow the same convention; however, the file extensions will be .obj.


Let me know if it helped.

So, I guess that in your email (pasted inbelow)you are reffering to VC settings.



But I want to know how to use QIPON and how can I made the setting as you said like


It seems that there is no way to set this in VC++ and therefore you will need to use the command line. In VC, you can only domulti fileipo (Qipo)or single file ipo (Qip). You could try to see what Qip gives you.

Here it is how you can find the vc settings:

Project Properties -> C++ -> Optimization -> Interprocedural Optimizations (in the Intel specific section)

and Project Properties -> Linker -> Optimzation -> Interprocedural optimizations (again in the Intel specific section) - it should be enabled

Please reply to this thread since it will increase your chance to get a reliable and faster answer.

Leave a Comment

Please sign in to add a comment. Not a member? Join today