Comment 0 for bug 1895358

Revision history for this message
pragyansri.pathi@intel.com (pragyan) wrote : [Bug[ A simple code including tgmath.h cannot be compiled with icc with Ubuntu 20.04 OS

[Summary]: A simple code including tgmath.h cannot be compiled with icc with Ubuntu 20.04 OS

[Ubuntu OS version]: 20.04

[Reproduce Steps]: Compile the following code with Intel compiler (icc) by running “icc -c test.c”

$ cat test.c
#include <tgmath.h>

[Results]
Expected: There should not be any compilation error

Actual: The following error is produced:

$ icc -c test.c
In file included from /localdisk2/mkl/aakkas/20200721_rls/lnx/compiler/latest/linux/bin/intel64/../../compiler/include/icc/tgmath.h(25),
                 from test.c(1):
/usr/include/tgmath.h(54): error: #error directive: "Unsupported combination of types for <tgmath.h>."
  # error "Unsupported combination of types for <tgmath.h>."
     ^

compilation aborted for test.c (code 2)

[Additional Information on Test setup]:

ICC compiler supports the __float128 type if the reference compiler is more recent than GNU version 4.4. Therefore, __HAVE_FLOAT128 should be set to 1 when ICC compiler is used with GNU version higher than 4.4. Based on this, I believe that the red part below in floatn.h, which comes with Ubuntu OS, should be updated/removed.

#if (defined __x86_64__ \
     ? __GNUC_PREREQ (4, 3) \
     : (defined __GNU__ ? __GNUC_PREREQ (4, 5) : __GNUC_PREREQ (4, 4))) \
     && !defined(__CUDACC__) && !defined(__ICC)
# define __HAVE_FLOAT128 1
#else
# define __HAVE_FLOAT128 0
#endif

Currently, when the tgmath.h system header file is included on Ubuntu 20.04 OS system, __HAVE_FLOAT128 is set to zero and __HAVE_FLOAT64X set to 1 for ICC. And this is not a supported combination as checked in the new tgmath.h system header file:

# if ((__HAVE_FLOAT64X && !__HAVE_FLOAT128) \
      || (__HAVE_FLOAT128 && !__HAVE_FLOAT64X))
# error "Unsupported combination of types for <tgmath.h>."
# endif

Upstream bug: Not known
=========================================