https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94080
Bug ID: 94080 Summary: -mabi=ieeelongdouble and -mfloat128 cause libstc++ header breakage Product: gcc Version: 9.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: murphyp at linux dot vnet.ibm.com Target Milestone: --- Target: powerpc64le When both -mfloat128 and -mabi=ieeelongdouble are used, various libstc++ headers break. I suspect more headers have similar problems. I.e "#include <algorithm>": cc1plus: warning: Using IEEE extended precision long double [-Wpsabi] In file included from /home/murp/glibc-scratch/install/compilers/powerpc64le-linux-gnu/powerpc64le-glibc-linux-gnu/include/c++/9.2.1/bits/move.h:55, from /home/murp/glibc-scratch/install/compilers/powerpc64le-linux-gnu/powerpc64le-glibc-linux-gnu/include/c++/9.2.1/bits/stl_pair.h:59, from /home/murp/glibc-scratch/install/compilers/powerpc64le-linux-gnu/powerpc64le-glibc-linux-gnu/include/c++/9.2.1/utility:70, from /home/murp/glibc-scratch/install/compilers/powerpc64le-linux-gnu/powerpc64le-glibc-linux-gnu/include/c++/9.2.1/algorithm:60, from foo.c:1: /home/murp/glibc-scratch/install/compilers/powerpc64le-linux-gnu/powerpc64le-glibc-linux-gnu/include/c++/9.2.1/type_traits:346:12: error: redefinition of ‘struct std::__is_floating_point_helper<long double>’ 346 | struct __is_floating_point_helper<__float128> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/murp/glibc-scratch/install/compilers/powerpc64le-linux-gnu/powerpc64le-glibc-linux-gnu/include/c++/9.2.1/type_traits:341:12: note: previous definition of ‘struct std::__is_floating_point_helper<long double>’ 341 | struct __is_floating_point_helper<long double> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /home/murp/glibc-scratch/install/compilers/powerpc64le-linux-gnu/powerpc64le-glibc-linux-gnu/include/c++/9.2.1/cstdlib:77, from /home/murp/glibc-scratch/install/compilers/powerpc64le-linux-gnu/powerpc64le-glibc-linux-gnu/include/c++/9.2.1/bits/stl_algo.h:59, from /home/murp/glibc-scratch/install/compilers/powerpc64le-linux-gnu/powerpc64le-glibc-linux-gnu/include/c++/9.2.1/algorithm:62, from foo.c:1: /home/murp/glibc-scratch/install/compilers/powerpc64le-linux-gnu/powerpc64le-glibc-linux-gnu/include/c++/9.2.1/bits/std_abs.h:103:3: error: redefinition of ‘constexpr long double std::abs(long double)’ 103 | abs(__float128 __x) | ^~~ /home/murp/glibc-scratch/install/compilers/powerpc64le-linux-gnu/powerpc64le-glibc-linux-gnu/include/c++/9.2.1/bits/std_abs.h:79:3: note: ‘constexpr long double std::abs(long double)’ previously defined here 79 | abs(long double __x) | ^~~