https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116991
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Assignee|unassigned at gcc dot gnu.org |redi at gcc dot gnu.org Last reconfirmed| |2024-10-07 Target Milestone|--- |15.0 Status|UNCONFIRMED |ASSIGNED --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- The warning is for the initialization from a long double literal in this function template: template<typename _Tp> inline std::complex<_Tp> __complex_acos(const std::complex<_Tp>& __z) { const std::complex<_Tp> __t = std::asin(__z); const _Tp __pi_2 = 1.5707963267948966192313216916397514L; return std::complex<_Tp>(__pi_2 - __t.real(), -__t.imag()); } This function template isn't used for _Float32, _Float64 etc. on other targets, because they define _GLIBCXX_USE_C99_COMPLEX_ARC and so have overloads for each type, like: inline __complex__ _Float32 __complex_acos(__complex__ _Float32 __z) { return __builtin_cacosf(__z); } We can just use a cast in the generic __complex_acos.