PR c/64440
[official-gcc.git] / gcc / testsuite / gcc.dg / fixed-point / view-convert-2.c
blobfbce5185e16602f1d432302305e1e66fd8446607
1 /* PR tree-optimization/56064 */
2 /* { dg-do run } */
3 /* { dg-options "-std=gnu99 -O2" } */
5 extern void abort (void);
6 extern void exit (int);
8 void test_k (void)
10 _Accum a;
11 __INT32_TYPE__ i = -__INT32_MAX__;
13 if (sizeof (a) != sizeof (i))
14 return;
16 __builtin_memcpy (&a, &i, sizeof (a));
18 if (a >= 0k)
19 abort();
22 void test_0k (void)
24 _Accum a;
25 __INT32_TYPE__ i = 0;
27 if (sizeof (a) != sizeof (i))
28 return;
30 __builtin_memcpy (&a, &i, sizeof (a));
32 if (a != 0k)
33 abort();
37 void test_hr (void)
39 short _Fract a;
40 __INT8_TYPE__ i = -__INT8_MAX__;
42 if (sizeof (a) != sizeof (i))
43 return;
45 __builtin_memcpy (&a, &i, sizeof (a));
47 if (a >= 0hr)
48 abort();
51 void test_0hr (void)
53 short _Fract a;
54 __INT8_TYPE__ i = 0;
56 if (sizeof (a) != sizeof (i))
57 return;
59 __builtin_memcpy (&a, &i, sizeof (a));
61 if (a != 0hr)
62 abort();
66 void test_si (void)
68 _Accum a = __ACCUM_MIN__;
69 __INT32_TYPE__ i;
71 if (sizeof (a) != sizeof (i))
72 return;
74 __builtin_memcpy (&i, &a, sizeof (i));
76 if (i >= 0)
77 abort();
80 void test_0si (void)
82 _Accum a = 0;
83 __INT32_TYPE__ i;
85 if (sizeof (a) != sizeof (i))
86 return;
88 __builtin_memcpy (&i, &a, sizeof (i));
90 if (i != 0)
91 abort();
95 void test_qi (void)
97 short _Fract a = __SFRACT_MIN__;
98 __INT8_TYPE__ i;
100 if (sizeof (a) != sizeof (i))
101 return;
103 __builtin_memcpy (&i, &a, sizeof (i));
105 if (i >= 0)
106 abort();
109 void test_0qi (void)
111 short _Fract a = 0hr;
112 __INT8_TYPE__ i;
114 if (sizeof (a) != sizeof (i))
115 return;
117 __builtin_memcpy (&i, &a, sizeof (i));
119 if (i != 0)
120 abort();
124 int main (void)
126 test_hr();
127 test_k();
128 test_qi();
129 test_si();
131 test_0hr();
132 test_0k();
133 test_0qi();
134 test_0si();
136 exit (0);
138 return 0;