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)
| ^~~