http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56020



             Bug #: 56020

           Summary: FE_INVALID flag not set on comparison with NAN

                    (unordered)

    Classification: Unclassified

           Product: gcc

           Version: 4.8.0

            Status: UNCONFIRMED

          Severity: normal

          Priority: P3

         Component: c

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: vincent-...@vinc17.net





GCC doesn't set the FE_INVALID flag on comparison with NAN (<=, >=, <, >), e.g.

with:



#include <stdio.h>

#include <math.h>

#include <fenv.h>



#pragma STDC FENV_ACCESS ON



int main (void)

{

  double d = NAN;

  int err;



  feclearexcept (FE_INVALID);

  d <= 0.0;

  err = ! fetestexcept(FE_INVALID);

  if (err)

    printf ("The FE_INVALID flag is not set\n");

  return err;

}



$ gcc-snapshot --version

gcc (Debian 20130113-1) 4.8.0 20130113 (experimental) [trunk revision 195136]

[...]

$ gcc-snapshot -std=c99 -Wall nancmp.c -o nancmp -lm

nancmp.c:5:0: warning: ignoring #pragma STDC FENV_ACCESS [-Wunknown-pragmas]

 #pragma STDC FENV_ACCESS ON

 ^

nancmp.c: In function 'main':

nancmp.c:13:3: warning: statement with no effect [-Wunused-value]

   d <= 0.0;

   ^

$ ./nancmp

The FE_INVALID flag is not set



The "statement with no effect" warning would also be incorrect once this bug is

fixed.

Reply via email to