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