This document provides a summary of new and changed product features and includes notes about features and problems not described in the product documentation.
Intel® C++ Compiler Classic (icc) is deprecated and was discontinued in the oneAPI 2024.0 release. Intel recommends that customers transition now to using the LLVM-based Intel® oneAPI DPC++/C++ Compiler (icx) for continued Windows* and Linux* support, new language support, new language features, and optimizations. For more information on icx, see the Intel® oneAPI DPC++/C++ Compiler Developer Guide and Reference and the Porting Guide for ICC Users to DPCPP or ICX.
For more information on icx, see the Intel® oneAPI DPC++/C++ Compiler Developer Guide and Reference and the Porting Guide for ICC Users to DPCPP or ICX.
This Release Note will only cover Intel® C++ Compiler Classic.
Key Features in Intel® C++ Compiler Classic 2021.10 (oneAPI 2023.2 Release )
- Bug fixes
- The Intel® C++ Compiler Classic has been updated to include recent versions of 3rd party components, which include functional and security updates.
Note: Intel® C++ Compiler Classic doesn't support GCC 13 compatibility mode. For GCC 13 compatibility mode, please transition to Intel® oneAPI DPC++/C++ Compiler.
Key Features in Intel® C++ Compiler Classic 2021.9 (oneAPI 2023.1 Release )
- Bug Fixes.
- The Intel® C++ Compiler Classic has been updated to include recent versions of 3rd party components, which include functional and security updates.
Key Features in Intel® C++ Compiler Classic 2021.8 (oneAPI 2023.0 Release )
- Bug Fixes.
- With Xcode 14.0.1 and higher, due to interactions with classes marked 'extern template' and its member functions marked with '_attribute_(internal_linkage)', you may see undefined references to such member functions when linking. To workaround such errors, you may add explicit instantiations of the respective class templates. For example,
$ cat head.cpp
#include <sstream>
struct my_sb : public std::basic_stringbuf<char> {
};
#ifdef WORKAROUND
template class std::basic_stringbuf<char>;
#endif
int main() {
my_sb sb;
}
$ icc head.cpp -wd10441
Undefined symbols for architecture x86_64:
"_ZNSt3115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE7seekposENS_4fposI11_mbstate_tEEj", referenced from:
__ZTV5my_sb in iccRZoeUh.o
ld: symbol(s) not found for architecture x86_64
$ icc head.cpp -wd10441 -DWORKAROUND
$
- Intel® C++ Compiler Classic 2021.8.0 has been updated to include functional and security updates. Users should update to the latest version.
Key Features in Intel® C++ Compiler Classic 2021.7.1 (oneAPI 2022.3.1 Release )
Intel® C++ Compiler Classic 2021.7.1 has been updated to include functional and security updates. Users should update to the latest version as it becomes available.
Key Features in Intel® C++ Compiler Classic 2021.7 (oneAPI 2022.3 Release )
- Bug Fixes.
-
The Intel® C++ Classic Compiler is deprecated and an additional diagnostic message will be output with each invocation. This diagnostic may impact expected output during compilation. For example, using the compiler to produce preprocessed information (icpc -E) will produce the additional deprecation diagnostic, interfering with the expected preprocessed output.
This output can be disabled by using -diag-disable=10441 on Linux/macOS or /Qdiag-disable:10441 on Windows. You can add this option on the command line, configuration file or option setting environment variables.
-
The Intel® C++ Compiler Classic for macOS depends on the installed xcode to discover the required headers/libraries. If you run the compiler and the 'xcrun' information has not been initialized, you may run into the following error (or something similar):
icc: error #10401: error running 'xcrun --sdk macosx --show-sdk-version'
Upon re-running the compiler, this error should go away as the 'xcrun' information is now cached.
Key Features in Intel® C++ Compiler Classic 2021.6 (oneAPI 2022.2 Release )
- Bug Fixes.
- A new compiler option "Wcheck-unicode-security" is supported, which determines whether the compiler performs source code checking for Unicode vulnerabilities.
Syntax on Linux: -W[no-]check-unicode-security
Syntax on macOS (Classic C/C++ only): -W[no-]check-unicode-security
Syntax on Windows: /W[no-]check-unicode-security
Key Features in Intel® C++ Compiler Classic 2021.5 (oneAPI 2022.1 Release )
- Bug Fixes
-
Support for Xcode* 13.1 (on macOS 12.0.1) and Visual Studio* 2019 16.11.6.
Limited support for Microsoft Visual Studio* 2022 preview release 17.0 RC3 (Preview 7). Full support for VisualStudio is expected in the next scheduled release (oneAPI 2022.2). -
New C++20 features supported under the /Qstd=c++20 (Windows*) or -std=c++20 (Linux*/OS X*) options. See documentation below.
Key Features in Intel® C++ Compiler Classic 2021.4
- Bug Fixes
- Support for Visual Studio* 2019 16.10.3 and Visual Studio* 2017 15.9.34
- Support for Xcode* 12.5
Key Features in Intel® C++ Compiler Classic 2021.3
- Bug fixes
Key Features in Intel® C++ Compiler Classic 2021.2.1
- Bug fixes
- Support for Microsoft Visual Studio* 2019 16.9.3.This release fixes calls to math builtin function which caused linker issue with VS 2019 v16.9.3. This allows the Intel® C++ Compiler Classic to work with VS 2019 16.9.3. C++ Users with VS 2019 update 16.9.3 should install this patch to fix the link issue.
Important Note -
- This 2021.2.1 is a PATCH release. If you use Intel Fortran please do NOT install this patch Release as it will break any existing Intel® Fortran Compiler Classic and Intel® Fortran Compiler (Beta) 2021.x that is installed on your system
- The 2021.2.1 Release is for Windows* only, C++ only, and a fix only for the Intel® C++ Compiler Classic only. DPC++ and ICX users do not need this release since it contains no new fixes or features from 2021.2.0.
- The 2021.2.1 Release is only provided by an online download HERE . This Release is not provided on the Intel® Registration Center and not in the NuGET repository.
Key Features in Intel® C++ Compiler Classic 2021.2
- Support for Alderlake and Sapphire Rapids features through compiler options -
- -mavxvnni
- -mcldemote
- -mhreset
- -mptwrite
- -mserialize
- -mwaitpkg
-
-march=alderlake, -xalderlake
-
-march=sapphirerapids, -xsapphirerapids
- Corrections to reported problems
New Features in Intel® C++ Compiler Classic 2021.1.2 Patch release
- This 2021.1.2 is a PATCH release. It is not a full compiler and relies on updating an existing one. It is intended to install over an existing oneAPI HPC Toolkit 2021.1.1 installation.
- This patch release fixes the issue Compiler Option --version Incorrect Version String. There are no other fixes in this compiler compared to the initial release 2021.1.1 compiler.
- When installing a patch release, users to install the latest patches for all the compilers that they use(Intel Fortran Compiler/Intel DPC++/C++ Compiler/Intel C++ Compiler classic).
- Intel® CPU Runtime for OpenCL™ Applications is also required to be re-installed. You can download the Intel® CPU Runtime for OpenCL™ Applications for Windows from here. For Linux, the package is distributed through APT and YUM, please follow the instructions on Installing Intel® oneAPI Toolkits via Linux* Package Managers to setup the repository and install the package "intel-oneapi-runtime-opencl".
Key Features in Intel® C++ Compiler Classic 2021.1
-
The oneAPI Environment Modules scripts include two new scripts named `icc` and `icc32`. These scripts are installed as part of the compiler package. They configure the environment for use with the Intel C++ Compiler classic (aka ICC). These new modulefile scripts are compatible with version 3.x and version 4.x of the Tcl Environment Modules implementation, as well as the Lmod implementation of modulefiles.
- New C++20 features supported under the /Qstd=c++20 (Windows*) or -std=c++20 (Linux*/OS X*) options.
- New features from OpenMP 5.0*
- IF clause on SIMD Directive
- NONTEMPORAL clause on SIMD directive
- Compiler option --version Incorrect version string
- Corrections to reported problems
How to install the Intel® C++ Compiler classic
Installation instructions are shipped with all Intel® Software Development Products as part of the documentation. Installation guide for the latest Intel® oneAPI HPC toolkit version is also available online. Please check Intel® oneAPI page for installation guides.
How to use the Intel® C++ Compiler Classic
Please refer to
- Get Started with the Intel® oneAPI Toolkits for Linux*
- Get Started with the Intel® oneAPI Toolkits for Windows*
- Get Started with the Intel® oneAPI Toolkits for MacOS*
for details on how to use the Intel® C++ Compiler Classic.
Documentation
Product documentation is available online
Support Deprecated
Support for macOS 10 is deprecated. oneAPI 2022.1 is the last supported release.
Visual Studio* 2017 depreacted in oneAPI 2022.1
Intel Compiler Integrations for Microsoft Visual Studio* 2017 are deprecated and will be removed in a future release. Support for Integrations for Visual Studio is limited to two supported major versions of Visual Studio: the current publicly available and supported major version and the previous major version from Microsoft.
Unsupported or Discontinued Features
Support for Intel® Xeon Phi™ Processor x200 “Knights Landing (KNL)” , Intel® Xeon Phi™ Processors “Knights Mill (KNM)” & Yocto embedded targets is removed.
Intel® Xeon Phi™ customers should continue to use compilers, libraries, and tools from the Intel® Parallel Studio XE 2020 and older PSXE releases, or compilers from the Intel® oneAPI Base Toolkit and Intel® oneAPI HPC Toolkit versions 2021.2 or 2021.1.
The Loop Profiler feature will be removed in future compilers.
The following compiler options related to Loop Profiler are deprecated and will be removed in future compilers
- profile-loops=keyword
- profile-loops-report=value
- profile-functions
- guide-profile
Intel® Cilk™ Plus support is removed
ICC -qnextgen compiler option is removed
Use of qnextgen (Linux), /qnextgen (Windows) compiler option is removed. Use "icx", instead of "icc -qnextgen" or "icc /qnextgen".
The Intel® C++ Compiler (icx) is available as "Intel® oneAPI DPC++/C++ Compiler" in Intel® oneAPI Base Toolkit release.
OpenMP offload is available as "Intel® oneAPI DPC++/C++ Compiler Pro" in Intel® oneAPI HPC Toolkit.
Please refer to Intel® oneAPI DPC++/C++ Compiler Release Notes for new Feature on Intel® C++ Compiler (icx) and OpenMP offload.
Known Issues
-
If you installed Intel compilers as part of the oneAPI 2023.2 release of the Intel® oneAPI Base Toolkit, the Intel® oneAPI HPC Toolkit, the Intel® oneAPI IoT Toolkit, or from the oneAPI Standalone Component page, please install the appropriate patch for your environment.
Two patches are now available, one for each of the Intel C++ and Fortran compilers, that were published as part of oneAPI 2023.2:
* Intel® oneAPI DPC+/C+ Compiler and Intel® C++ Compiler Classic
* Intel® Fortran Compiler Classic and Intel® Fortran CompilerThe patch version is 2023.2.1.
These patches apply only to Linux* and Windows*.
These patches resolve the issue of missing Environment Modules utility modulefiles and other issues.
The patches are available on the Intel® Registration Center, other distribution channels, like APT, YUM, and the standalone component page.
- The OpenMP default loop schedule modifier for work sharing loop constructs was changed to nonmonotonic when the schedule kind is dynamic or guided to conform to the OpenMP 5.0 standard. User code that assumes monotonic behavior may not work correctly with this change. Users can add the monotonic schedule modifier in the schedule clause to keep the previous code behavior.
-
Using -Qlong-double on windows has many potential for errors, since MSVC has never supported long double as an 80 fit FP type. The Microsoft math libraries, as well as formatted input and output, have no support for 80 bit long double.
In addition, the Microsoft C++ standard libraries (libcpmt.lib, libcpmtd.lib) define several symbols that conflict with standard double extended math function names, for example: frexpl, expl, logl, sinl, cosl, atanl (and others). These symbols have double precision (FP64) implementations in the Microsoft libraries, and double extended precision (FP80) implementations in the Intel math library (libmmt.lib). Because of this, correct behavior of FP80 math functions is not guaranteed when libcpmt.lib is linked first. Conversely, some Microsoft C++ standard library functions may malfunction when the Intel libmmt.lib is linked in first. Due to the fact that symbols such as frexpl are defined in the same module as standard C++ functions, link errors are known to occur for simple C++ programs that are compiled with the -Qlong-double option; these can be avoided by linking in libcpmt.lib before libmmt.lib. - macOS Big Sur 11 Not Found
Errors will be missing libraries such as -lSystem not found.If you encounter issues with ICC not finding the Xcode and system libraries, do the following:Once you have installed Xcode, run:
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
Then accept the license (only if you previously haven't) by:sudo xcodebuild -license - Error "no rule to process file" within Xcode* 10 and 11macOS*’s XCode 10 and 11 come with a new build system and it is configured as the default. Currently, the Intel Compiler does not support it. You will see the error "no rule to process file" when building an Intel C++ Compiler project within XCode. Please switch to “Legacy Build System” in Project Settings to build your project in Xcode.
For more details please find this article.
Deprecation Notice
Intel® C++ Compiler Classic (icc) is deprecated and will be removed in a oneAPI release in the second half of 2023. Intel recommends that customers transition now to using the LLVM-based Intel® oneAPI DPC++/C++ Compiler (icx) for continued Windows* and Linux* support, new language support, new language features, and optimizations. Note that starting with release 2021.7, macOS* support is limited to Mac* computers with Intel® Processors. For more information on icx, see the Intel® oneAPI DPC++/C++ Compiler Developer Guide and Reference and the Porting Guide for icc Users to dpcpp or icx.
Notices and Disclaimers
Intel technologies may require enabled hardware, software or service activation.
No product or component can be absolutely secure.
Your costs and results may vary.
© Intel Corporation. Intel, the Intel logo, and other Intel marks are trademarks of Intel Corporation or its subsidiaries. Other names and brands may be claimed as the property of others.
No license (express or implied, by estoppel or otherwise) to any intellectual property rights is granted by this document.
The products described may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are available on request.
Intel disclaims all express and implied warranties, including without limitation, the implied warranties of merchantability, fitness for a particular purpose, and non-infringement, as well as any warranty arising from course of performance, course of dealing, or usage in trade.
Intel optimizations, for Intel compilers or other products, may not optimize to the same degree for non-Intel products.