← Back to team overview

ubuntu-translations-coordinators team mailing list archive

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

 

You have been subscribed to a public bug:

[Impact]

 A simple code including tgmath.h cannot be compiled with icc with
Ubuntu 20.04 OS and later releases.

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

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

There should not be any compilation error


[Where problems could occur]

The fix is dropping compile time check preventing using float128 with
icc. In case of a mistake using float128 becomes prevented in other
compilers as well, but this is highly unlikely, since the vanilla
upstream code is known to work.

Older icc compilers (for which the patch has been introduced) will stop
compiling code with the _fixed_ tgmath.h because of LP: #1717257.

Users can still install older icc compilers from 3rd party sources, but
there is no good way of avoiding that. They can still override the
packaged tgmath.h.

[Original Bug Text]

[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
=========================================

** Affects: ubuntu-translations
     Importance: Undecided
         Status: Invalid

** Affects: glibc (Ubuntu)
     Importance: Undecided
         Status: Fix Released

** Affects: glibc (Ubuntu Focal)
     Importance: Undecided
     Assignee: Balint Reczey (rbalint)
         Status: Fix Released

** Affects: glibc (Ubuntu Groovy)
     Importance: Undecided
     Assignee: Balint Reczey (rbalint)
         Status: Fix Committed


** Tags: block-proposed-groovy fr-900 intel verification-done verification-done-focal verification-done-groovy
-- 
[Bug] A simple code including tgmath.h cannot be compiled with icc with Ubuntu 20.04 OS
https://bugs.launchpad.net/bugs/1895358
You received this bug notification because you are a member of Ubuntu Translations Coordinators, which is subscribed to Ubuntu Translations.