https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61501

            Bug ID: 61501
           Summary: spurious conversion warning with -Wconversion when
                    calling isnan(double x)
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: minor
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: niemayer at isg dot de

When compiling:
--------------------------
#include <math.h>

int test(double x) {
    return isnan(x);
}
--------------------------

with
 gcc-4.9.0 -Wconversion -c /tmp/conversion_warn.cxx
a spurious warning is emitted:

/tmp/conversion_warn.cxx: In function 'int test(double)':
/tmp/conversion_warn.cxx:4:9: warning: conversion to 'float' from 'double' may
alter its value [-Wfloat-conversion]
  return isnan(x);
         ^

This is what the output of compiling with "-E" of the above sample looks (with
includes from glibc 2.5.1):

-----------------------------
int test(double x) {
 return (sizeof (x) == sizeof (float) ? __isnanf (x) : sizeof (x) == sizeof
(double) ? __isnan (x) : __isnanl (x));
}
-----------------------------

(This looks a little like Bug 51294, but that was reported fixed a long time
ago.)

Reply via email to