modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/ieee/20000320-1.c (about) 1 #if __INT_MAX__ != 2147483647 || (__LONG_LONG_MAX__ != 9223372036854775807ll && __LONG_MAX__ != 9223372036854775807ll) 2 int main(void) { exit (0); } 3 #else 4 #if __LONG_MAX__ != 9223372036854775807ll 5 typedef unsigned long long ull; 6 #else 7 typedef unsigned long ull; 8 #endif 9 typedef unsigned ul; 10 11 union fl { 12 float f; 13 ul l; 14 } uf; 15 union dl { 16 double d; 17 ull ll; 18 } ud; 19 20 int failed = 0; 21 22 void c(ull d, ul f) 23 { 24 ud.ll = d; 25 uf.f = (float) ud.d; 26 if (uf.l != f) 27 { 28 failed++; 29 } 30 } 31 32 int main() 33 { 34 if (sizeof (float) != sizeof (ul) 35 || sizeof (double) != sizeof (ull)) 36 exit (0); 37 38 #if (defined __arm__ || defined __thumb__) && ! (defined __ARMEB__ || defined __VFP_FP__) 39 /* The ARM always stores FP numbers in big-wordian format, 40 even when running in little-byteian mode. */ 41 c(0x0000000036900000ULL, 0x00000000U); 42 c(0x0000000136900000ULL, 0x00000001U); 43 c(0xffffffff369fffffULL, 0x00000001U); 44 c(0x0000000036A00000ULL, 0x00000001U); 45 c(0xffffffff36A7ffffULL, 0x00000001U); 46 c(0x0000000036A80000ULL, 0x00000002U); 47 c(0xffffffff36AfffffULL, 0x00000002U); 48 c(0x0000000036b00000ULL, 0x00000002U); 49 c(0x0000000136b00000ULL, 0x00000002U); 50 51 c(0xdfffffff380fffffULL, 0x007fffffU); 52 c(0xe0000000380fffffULL, 0x00800000U); 53 c(0xe0000001380fffffULL, 0x00800000U); 54 c(0xffffffff380fffffULL, 0x00800000U); 55 c(0x0000000038100000ULL, 0x00800000U); 56 c(0x0000000138100000ULL, 0x00800000U); 57 c(0x1000000038100000ULL, 0x00800000U); 58 c(0x1000000138100000ULL, 0x00800001U); 59 c(0x2fffffff38100000ULL, 0x00800001U); 60 c(0x3000000038100000ULL, 0x00800002U); 61 c(0x5000000038100000ULL, 0x00800002U); 62 c(0x5000000138100000ULL, 0x00800003U); 63 #else 64 c(0x3690000000000000ULL, 0x00000000U); 65 c(0x3690000000000001ULL, 0x00000001U); 66 c(0x369fffffffffffffULL, 0x00000001U); 67 c(0x36A0000000000000ULL, 0x00000001U); 68 c(0x36A7ffffffffffffULL, 0x00000001U); 69 c(0x36A8000000000000ULL, 0x00000002U); 70 c(0x36AfffffffffffffULL, 0x00000002U); 71 c(0x36b0000000000000ULL, 0x00000002U); 72 c(0x36b0000000000001ULL, 0x00000002U); 73 74 c(0x380fffffdfffffffULL, 0x007fffffU); 75 c(0x380fffffe0000000ULL, 0x00800000U); 76 c(0x380fffffe0000001ULL, 0x00800000U); 77 c(0x380fffffffffffffULL, 0x00800000U); 78 c(0x3810000000000000ULL, 0x00800000U); 79 c(0x3810000000000001ULL, 0x00800000U); 80 c(0x3810000010000000ULL, 0x00800000U); 81 c(0x3810000010000001ULL, 0x00800001U); 82 c(0x381000002fffffffULL, 0x00800001U); 83 c(0x3810000030000000ULL, 0x00800002U); 84 c(0x3810000050000000ULL, 0x00800002U); 85 c(0x3810000050000001ULL, 0x00800003U); 86 #endif 87 88 if (failed) 89 abort (); 90 else 91 exit (0); 92 } 93 #endif