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

pragyansri.pathi@intel.com 1895358 at bugs.launchpad.net
Wed Sep 16 17:10:26 UTC 2020


@dimitri.ledkov at canonical.com

Dimitri - 
We found that Ubuntu's modified glibc header file caused the problem. In the glibc sources the following line does not exist
 
    &&  !defined(__CUDACC__) && !defined(__ICC)
 
so the code in glibc's header file looks like this:
 
#if (defined __x86_64__   \
    ? __GNUC_PREREQ (4, 3)\
    : (defined __GNU__ ? __GNUC_PREREQ (4, 5) : __GNUC_PREREQ (4, 4)))
# define __HAVE_FLOAT128 1
#else
# define __HAVE_FLOAT128 0
#endif
 
Therefore, the fix/update is needed in the Ubuntu’s modified header file.  
You can see all comments from https://sourceware.org/bugzilla/show_bug.cgi?id=26621

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to glibc in Ubuntu.
https://bugs.launchpad.net/bugs/1895358

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

Status in intel:
  Incomplete
Status in glibc package in Ubuntu:
  Incomplete

Bug description:
  [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
  =========================================

To manage notifications about this bug go to:
https://bugs.launchpad.net/intel/+bug/1895358/+subscriptions



More information about the foundations-bugs mailing list