1  /* Test non-canonical BID significands: _Decimal128.  Bug 91226.  */
       2  /* { dg-do run { target lp64 } } */
       3  /* { dg-require-effective-target dfp_bid } */
       4  /* { dg-options "-std=gnu2x -O2" } */
       5  
       6  extern void abort (void);
       7  extern void exit (int);
       8  
       9  union u
      10  {
      11    _Decimal128 d128;
      12    unsigned __int128 u128;
      13  };
      14  
      15  #define U128(hi, lo) (((unsigned __int128) lo) \
      16  		      | (((unsigned __int128) hi) << 64))
      17  
      18  int
      19  main (void)
      20  {
      21    unsigned __int128 i = U128 (0x3041ed09bead87c0ULL, 0x378d8e6400000001ULL);
      22    union u x;
      23    _Decimal128 d128;
      24    x.u128 = i;
      25    d128 = x.d128;
      26    volatile double d = d128;
      27    if (d == 0)
      28      exit (0);
      29    else
      30      abort ();
      31  }