http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58625
Bug ID: 58625
Summary: std::signbit always converts to double
Product: gcc
Version: 4.9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: olegendo at gcc dot gnu.org
In file libstdc++-v4/include/c_global:
constexpr bool
signbit(float __x)
{ return __builtin_signbit(__x); }
constexpr bool
signbit(double __x)
{ return __builtin_signbit(__x); }
constexpr bool
signbit(long double __x)
{ return __builtin_signbit(__x); }
I believe this is supposed to be:
constexpr bool
signbit(float __x)
{ return __builtin_signbitf(__x); }
constexpr bool
signbit(double __x)
{ return __builtin_signbit(__x); }
constexpr bool
signbit(long double __x)
{ return __builtin_signbitl(__x); }
As it is right now, std::signbit always does a conversion to double.