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)18main (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