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.

Reply via email to