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