Are Intel Compiler-generated objects/binaries backward and/or forward compatible between versions?

Published:08/22/2014   Last Updated:08/22/2014

In general, objects generated by different major versions of the Intel compiler are compatible with each other, with three main exceptions:

  1. Objects built with interprocedural optimization (/Qipo or -ipo). All such objects should be built with the same compiler version and subversion. Example:
    (with 14.0) icpc -ipo -c -o a-14.o a.cpp
    (with 15.0) icpc -ipo -c -o b-15.o b.cpp
    (with 15.0) icpc –ipo a-14.o b-15.o
    "ipo: error #11034: il version for a-14.o (265739) does not match compiler's il version (258839), please regenerate”​
  2. Objects built to be compatible with one underlying ABI version may not be compatible with objects built to be compatible with a different ABI version. Such ABI versions correspond to the options /Qvc (Windows*) or -gcc-name and -gxx-name (Linux*). The default ABI may be different on different host systems. This more typically results in linker errors, but there is the possibility of runtime errors as well.
  3. Objects built with a recent compiler version may not be compatible with the run-time libraries of an older compiler version. Such objects may call APIs not supported by the older compiler version. When mixing objects from multiple compiler versions, use the most recent compiler version and run-time to link. Example:
    (with 14.0) icpc -c -o a-14.o a.cpp
    (with 15.0) icpc -c -o b-15.o b.cpp
    (with 14.0) icpc a-14.o b-15.o <--- May fail with unresolved symbol error
    (with 15.0) icpc a-14.o b-15.o <--- Succeeds

     

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804