** Description changed: + [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): + 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>." - ^ - + # 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. - + 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) + ? __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)) + || (__HAVE_FLOAT128 && !__HAVE_FLOAT64X)) # error "Unsupported combination of types for <tgmath.h>." # endif Upstream bug: Not known =========================================
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to 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 To manage notifications about this bug go to: https://bugs.launchpad.net/intel/+bug/1895358/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs