1  /* { dg-do compile } */
       2  /* { dg-options "-O -fno-signaling-nans -fno-trapping-math -fdump-tree-original" } */
       3  
       4  /* We can not get rid of comparison in tests below because of
       5     pending NaN exceptions.
       6  
       7     TODO: avoid under -fno-trapping-math.  */
       8  
       9  #define QNAN __builtin_nanf ("0")
      10  
      11  void nonfinite(unsigned short x) {
      12    {
      13      volatile int nonfinite_1;
      14      nonfinite_1 = (float) x > QNAN;
      15      /* { dg-final { scan-tree-dump "nonfinite_1 = 0" "original" } } */
      16    }
      17  
      18    {
      19      volatile int nonfinite_2;
      20      nonfinite_2 = (float) x >= QNAN;
      21      /* { dg-final { scan-tree-dump "nonfinite_2 = 0" "original" } } */
      22    }
      23  
      24    {
      25      volatile int nonfinite_3;
      26      nonfinite_3 = (float) x < QNAN;
      27      /* { dg-final { scan-tree-dump "nonfinite_3 = 0" "original" } } */
      28    }
      29  
      30    {
      31      volatile int nonfinite_4;
      32      nonfinite_4 = (float) x <= QNAN;
      33      /* { dg-final { scan-tree-dump "nonfinite_4 = 0" "original" } } */
      34    }
      35  
      36    {
      37      volatile int nonfinite_11;
      38      nonfinite_11 = (float) x == QNAN;
      39      /* { dg-final { scan-tree-dump "nonfinite_11 = 0" "original" } } */
      40    }
      41  
      42    {
      43      volatile int nonfinite_12;
      44      nonfinite_12 = (float) x != QNAN;
      45      /* { dg-final { scan-tree-dump "nonfinite_12 = 1" "original" } } */
      46    }
      47  }