Hello,
I'm using the Intel Compiler 2018 Update 2 on Linux x86_64 (Arch Linux). Arch Linux's default compiler and glibc versions are GCC 7.3.1 and glibc 2.27 at the moment. In
https://software.intel.com/en-us/comment/1915553#
I reported an incompatibility of ICC 17 when used with GCC 7 + glibc 2.26. This incompatibility is now fixed, but similar problems have now arisen with glibc 2.27. glibc 2.27 adds a few function declarations for the _Float32, _Float32x, _Float64, _Float64x, ... types in case the corresponding __HAVE_FLOATXYZ macros are defined, for example:
#if __HAVE_FLOAT32 && __GLIBC_USE (IEC_60559_TYPES_EXT) extern _Float32 strtof32 (const char *__restrict __nptr, char **__restrict __endptr) __THROW __nonnull ((1)); #endif
This fails to compile with Intel Compiler 2018 Update 2, when using GCC 7. GCC 7 is needed because one of its headers will define the __HAVE_FLOATXYZ macros (see https://gcc.gnu.org/gcc-7/changes.html, search for Float32).
Another unrelated incompatibility with glibc 2.27 is this part in the Intel Compiler math.h:
#if (!defined(__linux__) || !defined(__USE_MISC)) && !defined(__NetBSD__) || defined (__PURE_INTEL_C99_HEADERS__) typedef enum ___LIB_VERSIONIMF_TYPE { _IEEE_ = -1 /\* IEEE-like behavior *\/ ,_SVID_ /\* SysV, Rel. 4 behavior *\/ ,_XOPEN_ /\* Unix98 *\/ ,_POSIX_ /\* Posix *\/ ,_ISOC_ /\* ISO C9X *\/ } _LIB_VERSIONIMF_TYPE; #else # define _LIB_VERSIONIMF_TYPE _LIB_VERSION_TYPE #endif _LIBIMF_EXTERN_C _LIB_VERSIONIMF_TYPE _LIBIMF_PUBVAR _LIB_VERSIONIMF;
This part of math.h causes a compilation failure because glibc 2.27 removed the macro '_LIB_VERSION_TYPE' (https://sourceware.org/git/?p=glibc.git;a=commit;h=813378e9fe17e029caf62...).
I realize that the current version of the compiler does not officially support glibc 2.27, but it would be nice to have this fixed in a future release, which is why I'm reporting these incompatibilities here.