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

Balint Reczey 1895358 at bugs.launchpad.net
Mon Jan 25 18:48:51 UTC 2021


Verified 2.32-0ubuntu3.1 on Groovy (using glibc binary packages binary-
copied to a PPA):

root at gg-icc:~# vi test.c
root at gg-icc:~# /opt/intel/oneapi/compiler/2021.1.2/linux/bin/intel64/icc -c test.c 
In file included from /opt/intel/oneapi/compiler/2021.1.2/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)

root at gg-icc:~# apt upgrade 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following package was automatically installed and is no longer required:
  libfreetype6
Use 'apt autoremove' to remove it.
The following packages will be upgraded:
  libc-bin libc-dev-bin libc6 libc6-dev locales
5 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 9339 kB of archives.
After this operation, 2048 B of additional disk space will be used.
Do you want to continue? [Y/n] 
Get:1 http://ppa.launchpad.net/rbalint/scratch4/ubuntu groovy/main amd64 libc6-dev amd64 2.32-0ubuntu3.1 [2130 kB]
Get:2 http://ppa.launchpad.net/rbalint/scratch4/ubuntu groovy/main amd64 libc-dev-bin amd64 2.32-0ubuntu3.1 [30.8 kB]
Get:3 http://ppa.launchpad.net/rbalint/scratch4/ubuntu groovy/main amd64 libc6 amd64 2.32-0ubuntu3.1 [2682 kB]
Get:4 http://ppa.launchpad.net/rbalint/scratch4/ubuntu groovy/main amd64 libc-bin amd64 2.32-0ubuntu3.1 [617 kB]
Get:5 http://ppa.launchpad.net/rbalint/scratch4/ubuntu groovy/main amd64 locales all 2.32-0ubuntu3.1 [3879 kB]
Fetched 9339 kB in 3s (3189 kB/s)  
Preconfiguring packages ...
(Reading database ... 67950 files and directories currently installed.)
Preparing to unpack .../libc6-dev_2.32-0ubuntu3.1_amd64.deb ...
Unpacking libc6-dev:amd64 (2.32-0ubuntu3.1) over (2.32-0ubuntu3) ...
Preparing to unpack .../libc-dev-bin_2.32-0ubuntu3.1_amd64.deb ...
Unpacking libc-dev-bin (2.32-0ubuntu3.1) over (2.32-0ubuntu3) ...
Preparing to unpack .../libc6_2.32-0ubuntu3.1_amd64.deb ...
Unpacking libc6:amd64 (2.32-0ubuntu3.1) over (2.32-0ubuntu3) ...
Setting up libc6:amd64 (2.32-0ubuntu3.1) ...
(Reading database ... 67950 files and directories currently installed.)
Preparing to unpack .../libc-bin_2.32-0ubuntu3.1_amd64.deb ...
Unpacking libc-bin (2.32-0ubuntu3.1) over (2.32-0ubuntu3) ...
Setting up libc-bin (2.32-0ubuntu3.1) ...
(Reading database ... 67950 files and directories currently installed.)
Preparing to unpack .../locales_2.32-0ubuntu3.1_all.deb ...
Unpacking locales (2.32-0ubuntu3.1) over (2.32-0ubuntu3) ...
Setting up locales (2.32-0ubuntu3.1) ...
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.
Setting up libc-dev-bin (2.32-0ubuntu3.1) ...
Setting up libc6-dev:amd64 (2.32-0ubuntu3.1) ...
Processing triggers for man-db (2.9.3-2) ...
root at gg-icc:~# /opt/intel/oneapi/compiler/2021.1.2/linux/bin/intel64/icc -c test.c 
root at gg-icc:~# dpkg -S /usr/include/tgmath.h
libc6-dev:amd64: /usr/include/tgmath.h
root at gg-icc:~# dpkg -l libc6-dev
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name            Version         Architecture Description
+++-===============-===============-============-=====================================================
ii  libc6-dev:amd64 2.32-0ubuntu3.1 amd64        GNU C Library: Development Libraries and Header Files


** Tags removed: verification-needed-groovy
** Tags added: verification-done-groovy

-- 
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:
  Fix Released
Status in glibc source package in Focal:
  Fix Committed
Status in glibc source package in Groovy:
  Fix Committed

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

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



More information about the foundations-bugs mailing list