171SN/A#if __INT_MAX__ != 2147483647 || (__LONG_LONG_MAX__ != 9223372036854775807ll && __LONG_MAX__ != 9223372036854775807ll) 2157SN/Aint main(void) { exit (0); } 371SN/A#else 471SN/A#if __LONG_MAX__ != 9223372036854775807ll 571SN/Atypedef unsigned long long ull; 671SN/A#else 7157SN/Atypedef unsigned long ull; 871SN/A#endif 9157SN/Atypedef unsigned ul; 1071SN/A 1171SN/Aunion fl { 1271SN/A float f; 1371SN/A ul l; 1471SN/A} uf; 1571SN/Aunion dl { 1671SN/A double d; 1771SN/A ull ll; 1871SN/A} ud; 1971SN/A 2071SN/Aint failed = 0; 21157SN/A 22157SN/Avoid c(ull d, ul f) 23157SN/A{ 2471SN/A ud.ll = d; 2571SN/A uf.f = (float) ud.d; 260SN/A if (uf.l != f) 270SN/A { 2871SN/A failed++; 290SN/A } 300SN/A} 310SN/A 3271SN/Aint main() 330SN/A{ 340SN/A if (sizeof (float) != sizeof (ul) 350SN/A || sizeof (double) != sizeof (ull)) 360SN/A exit (0); 370SN/A 380SN/A c(0x3690000000000000ULL, 0x00000000U); 390SN/A#if (defined __arm__ || defined __thumb__) && ! (defined __ARMEB__ || defined __VFP_FP__) 400SN/A /* The ARM always stores FP numbers in big-wordian format, 410SN/A even when running in little-byteian mode. */ 420SN/A c(0x0000000136900000ULL, 0x00000001U); 430SN/A c(0xffffffff369fffffULL, 0x00000001U); 440SN/A c(0x0000000036A00000ULL, 0x00000001U); 450SN/A c(0xffffffff36A7ffffULL, 0x00000001U); 460SN/A c(0x0000000036A80000ULL, 0x00000002U); 470SN/A c(0xffffffff36AfffffULL, 0x00000002U); 480SN/A c(0x0000000036b00000ULL, 0x00000002U); 490SN/A c(0x0000000136b00000ULL, 0x00000002U); 500SN/A 510SN/A c(0xdfffffff380fffffULL, 0x007fffffU); 520SN/A c(0xe0000000380fffffULL, 0x00800000U); 530SN/A c(0xe0000001380fffffULL, 0x00800000U); 540SN/A c(0xffffffff380fffffULL, 0x00800000U); 550SN/A c(0x0000000038100000ULL, 0x00800000U); 560SN/A c(0x0000000138100000ULL, 0x00800000U); 570SN/A c(0x1000000038100000ULL, 0x00800000U); 580SN/A c(0x1000000138100000ULL, 0x00800001U); 590SN/A c(0x2fffffff38100000ULL, 0x00800001U); 600SN/A c(0x3000000038100000ULL, 0x00800002U); 610SN/A c(0x5000000038100000ULL, 0x00800002U); 620SN/A c(0x5000000138100000ULL, 0x00800003U); 630SN/A#else 640SN/A c(0x3690000000000001ULL, 0x00000001U); 650SN/A c(0x369fffffffffffffULL, 0x00000001U); 660SN/A c(0x36A0000000000000ULL, 0x00000001U); 670SN/A c(0x36A7ffffffffffffULL, 0x00000001U); 680SN/A c(0x36A8000000000000ULL, 0x00000002U); 690SN/A c(0x36AfffffffffffffULL, 0x00000002U); 700SN/A c(0x36b0000000000000ULL, 0x00000002U); 710SN/A c(0x36b0000000000001ULL, 0x00000002U); 720SN/A 730SN/A c(0x380fffffdfffffffULL, 0x007fffffU); 740SN/A c(0x380fffffe0000000ULL, 0x00800000U); 750SN/A c(0x380fffffe0000001ULL, 0x00800000U); 760SN/A c(0x380fffffffffffffULL, 0x00800000U); 770SN/A c(0x3810000000000000ULL, 0x00800000U); 780SN/A c(0x3810000000000001ULL, 0x00800000U); 790SN/A c(0x3810000010000000ULL, 0x00800000U); 800SN/A c(0x3810000010000001ULL, 0x00800001U); 810SN/A c(0x381000002fffffffULL, 0x00800001U); 820SN/A c(0x3810000030000000ULL, 0x00800002U); 830SN/A c(0x3810000050000000ULL, 0x00800002U); 840SN/A c(0x3810000050000001ULL, 0x00800003U); 850SN/A#endif 860SN/A 870SN/A if (failed) 880SN/A abort (); 890SN/A else 900SN/A exit (0); 910SN/A} 920SN/A#endif 930SN/A