https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111956

Thomas Schwinge <tschwinge at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |build
                 CC|                            |egallager at gcc dot gnu.org,
                   |                            |tschwinge at gcc dot gnu.org
   Last reconfirmed|                            |2023-10-31
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW

--- Comment #2 from Thomas Schwinge <tschwinge at gcc dot gnu.org> ---
While you (Gaius) here report test failure, similar to what Maciej had reported
in PR112091 "rs6000: redefinition of 'constexpr long double std::abs(long
double)', while building libgm2", I can't even build libgm2 anymore.

Similar had reported Eric (CCed here) on GCC IRC, 2023-10-20:

    <ericgallager> ok now this is an error I haven't seen before
    <ericgallager>
/home/egallager/gcc/.cfarm135_build.build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/std_abs.h:137:3:
error: redefinition of 'constexpr long double std::abs(long double)'
    <ericgallager> seen on cfarm135
    <ericgallager> I think I remember something about __float128 being weird on
certain powerpc systems? Is there a configure flag that affects it?
    <ericgallager> I'll open a bug about it...
    <ericgallager> although actually wait... I'm not quite sure the component,
though... it's an error from a libstdc++ header, but it shows up while building
KeyBoardLEDs.lo for libm2cor in libgm2, but only for a specific target...

For example, I've got on powerpc64le-unknown-linux-gnu on indeed old Ubuntu
14.04 "trusty":

    +#define M2C_LONGREAL_FLOAT128 1
    +#define M2C_LONGREAL_PPC64LE 1

..., and this fails to build as follows:

    libtool: compile:  [...]/build-gcc/./gcc/xg++ -B[...]/build-gcc/./gcc/
-nostdinc++ -nostdinc++
-I[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu
-I[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include
-I[...]/source-gcc/libstdc++-v3/libsupc++
-I[...]/source-gcc/libstdc++-v3/include/backward
-I[...]/source-gcc/libstdc++-v3/testsuite/util
-L[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/src
-L[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/src/.libs
-L[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs
-B/powerpc64le-unknown-linux-gnu/bin/ -B/powerpc64le-unknown-linux-gnu/lib/
-isystem /powerpc64le-unknown-linux-gnu/include -isystem
/powerpc64le-unknown-linux-gnu/sys-include -c
-I[...]/source-gcc/libgm2/libm2cor -g -O2 -D_GNU_SOURCE -g -O2 -I. -I..
-I[...]/source-gcc/gcc/m2/gm2-libs -I[...]/source-gcc/gcc/m2/gm2-libs-iso
-DBUILD_GM2_LIBS -I[...]/source-gcc/libgm2/libm2cor/../
-I[...]/source-gcc/libgm2/libm2cor/../libm2iso -mabi=ieeelongdouble
[...]/source-gcc/libgm2/libm2cor/KeyBoardLEDs.cc  -fPIC -DPIC -o
.libs/KeyBoardLEDs.o
    cc1plus: warning: Using IEEE extended precision ‘long double’ [-Wpsabi]
    In file included from
[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/cstdlib:81,
                     from
[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/stdlib.h:36,
                     from [...]/source-gcc/libgm2/libm2cor/KeyBoardLEDs.cc:43:
   
[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/std_abs.h:137:3:
error: redefinition of ‘constexpr long double std::abs(long double)’
      137 |   abs(__float128 __x)
          |   ^~~
   
[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/std_abs.h:79:3:
note: ‘constexpr long double std::abs(long double)’ previously defined here
       79 |   abs(long double __x)
          |   ^~~
    make[5]: *** [KeyBoardLEDs.lo] Error 1

    [...]

    libtool: compile:  [...]/build-gcc/./gcc/xg++ -B[...]/build-gcc/./gcc/
-nostdinc++ -nostdinc++
-I[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu
-I[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include
-I[...]/source-gcc/libstdc++-v3/libsupc++
-I[...]/source-gcc/libstdc++-v3/include/backward
-I[...]/source-gcc/libstdc++-v3/testsuite/util
-L[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/src
-L[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/src/.libs
-L[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs
-B/powerpc64le-unknown-linux-gnu/bin/ -B/powerpc64le-unknown-linux-gnu/lib/
-isystem /powerpc64le-unknown-linux-gnu/include -isystem
/powerpc64le-unknown-linux-gnu/sys-include -c
-I[...]/source-gcc/libgm2/libm2pim -g -O2 -D_GNU_SOURCE -g -O2 -I. -I..
-I[...]/source-gcc/gcc/m2/gm2-libs -I[...]/source-gcc/gcc/m2/gm2-libs-iso
-DBUILD_GM2_LIBS -I[...]/source-gcc/libgm2/libm2pim/../
-I[...]/source-gcc/libgm2/libm2pim/../libm2iso -mabi=ieeelongdouble
[...]/source-gcc/libgm2/libm2pim/wrapc.cc  -fPIC -DPIC -o .libs/wrapc.o
    cc1plus: warning: Using IEEE extended precision ‘long double’ [-Wpsabi]
    In file included from
[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/cmath:49,
                     from
[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/math.h:36,
                     from [...]/source-gcc/libgm2/libm2pim/wrapc.cc:35:
   
[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/std_abs.h:137:3:
error: redefinition of ‘constexpr long double std::abs(long double)’
      137 |   abs(__float128 __x)
          |   ^~~
   
[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/std_abs.h:79:3:
note: ‘constexpr long double std::abs(long double)’ previously defined here
       79 |   abs(long double __x)
          |   ^~~
    In file included from
[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/stl_pair.h:60,
                     from
[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/stl_algobase.h:64,
                     from
[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/specfun.h:43,
                     from
[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/cmath:3699:
   
[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/type_traits:514:12:
error: redefinition of ‘struct std::__is_floating_point_helper<long double>’
      514 |     struct __is_floating_point_helper<__float128>
          |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   
[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/type_traits:479:12:
note: previous definition of ‘struct std::__is_floating_point_helper<long
double>’
      479 |     struct __is_floating_point_helper<long double>
          |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   
[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/stl_algobase.h:1060:3:
error: redefinition of ‘constexpr long long int std::__size_to_integer(long
double)’
     1060 |   __size_to_integer(__float128 __n) { return (long long)__n; }
          |   ^~~~~~~~~~~~~~~~~
   
[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/stl_algobase.h:1057:3:
note: ‘constexpr long long int std::__size_to_integer(long double)’ previously
defined here
     1057 |   __size_to_integer(long double __n) { return (long long)__n; }
          |   ^~~~~~~~~~~~~~~~~
    In file included from
[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/specfun.h:44:
   
[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/limits:2089:12:
error: redefinition of ‘struct std::numeric_limits<long double>’
     2089 |     struct numeric_limits<__float128>
          |            ^~~~~~~~~~~~~~~~~~~~~~~~~~
   
[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/limits:1820:12:
note: previous definition of ‘struct std::numeric_limits<long double>’
     1820 |     struct numeric_limits<long double>
          |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    make[5]: *** [wrapc.lo] Error 1

If I to revert commit r14-4149-g81d5ca0b9b8431f1bd7a5ec8a2c94f04bb0cf032 "PR
108143/modula2 LONGREAL and powerpc64le-linux" (..., which by now means
resolving conflicts due to subsequent changes), then I get clean build and test
results.

Reply via email to