1  /* Test DEC*_SNAN macros defined in <float.h> with DFP support.  */
       2  /* { dg-do run } */
       3  /* { dg-options "-std=c2x" } */
       4  
       5  #include <float.h>
       6  
       7  #ifndef DEC32_SNAN
       8  # error "DEC32_SNAN not defined"
       9  #endif
      10  
      11  #ifndef DEC64_SNAN
      12  # error "DEC64_SNAN not defined"
      13  #endif
      14  
      15  #ifndef DEC128_SNAN
      16  # error "DEC128_SNAN not defined"
      17  #endif
      18  
      19  volatile _Decimal32 d32 = DEC32_SNAN;
      20  volatile _Decimal64 d64 = DEC64_SNAN;
      21  volatile _Decimal128 d128 = DEC128_SNAN;
      22  
      23  extern void abort (void);
      24  extern void exit (int);
      25  
      26  int
      27  main (void)
      28  {
      29    (void) _Generic (DEC32_SNAN, _Decimal32 : 0);
      30    if (!__builtin_isnan (DEC32_SNAN))
      31      abort ();
      32    if (!__builtin_isnan (d32))
      33      abort ();
      34    (void) _Generic (DEC64_SNAN, _Decimal64 : 0);
      35    if (!__builtin_isnan (DEC64_SNAN))
      36      abort ();
      37    if (!__builtin_isnan (d64))
      38      abort ();
      39    (void) _Generic (DEC128_SNAN, _Decimal128 : 0);
      40    if (!__builtin_isnan (DEC128_SNAN))
      41      abort ();
      42    if (!__builtin_isnan (d128))
      43      abort ();
      44    exit (0);
      45  }