Imported Upstream version 4.8.1
[platform/upstream/gcc48.git] / gcc / testsuite / gcc.dg / fixed-point / view-convert-2.c
1 /* PR tree-optimization/56064 */
2 /* { dg-do run } */
3 /* { dg-options "-std=gnu99 -O2" } */
4
5 extern void abort (void);
6 extern void exit (int);
7
8 void test_k (void)
9 {
10   _Accum a;
11   __INT32_TYPE__ i = -__INT32_MAX__;
12   
13   if (sizeof (a) != sizeof (i))
14     return;
15
16   __builtin_memcpy (&a, &i, sizeof (a));
17
18   if (a >= 0k)
19     abort();
20 }
21
22 void test_0k (void)
23 {
24   _Accum a;
25   __INT32_TYPE__ i = 0;
26   
27   if (sizeof (a) != sizeof (i))
28     return;
29
30   __builtin_memcpy (&a, &i, sizeof (a));
31
32   if (a != 0k)
33     abort();
34 }
35
36
37 void test_hr (void)
38 {
39   short _Fract a;
40   __INT8_TYPE__ i = -__INT8_MAX__;
41
42   if (sizeof (a) != sizeof (i))
43     return;
44
45   __builtin_memcpy (&a, &i, sizeof (a));
46
47   if (a >= 0hr)
48     abort();
49 }
50
51 void test_0hr (void)
52 {
53   short _Fract a;
54   __INT8_TYPE__ i = 0;
55
56   if (sizeof (a) != sizeof (i))
57     return;
58
59   __builtin_memcpy (&a, &i, sizeof (a));
60
61   if (a != 0hr)
62     abort();
63 }
64
65
66 void test_si (void)
67 {
68   _Accum a = __ACCUM_MIN__;
69   __INT32_TYPE__ i;
70
71   if (sizeof (a) != sizeof (i))
72     return;
73
74   __builtin_memcpy (&i, &a, sizeof (i));
75
76   if (i >= 0)
77     abort();
78 }
79
80 void test_0si (void)
81 {
82   _Accum a = 0;
83   __INT32_TYPE__ i;
84
85   if (sizeof (a) != sizeof (i))
86     return;
87
88   __builtin_memcpy (&i, &a, sizeof (i));
89
90   if (i != 0)
91     abort();
92 }
93
94
95 void test_qi (void)
96 {
97   short _Fract a = __SFRACT_MIN__;
98   __INT8_TYPE__ i;
99
100   if (sizeof (a) != sizeof (i))
101     return;
102
103   __builtin_memcpy (&i, &a, sizeof (i));
104
105   if (i >= 0)
106     abort();
107 }
108
109 void test_0qi (void)
110 {
111   short _Fract a = 0hr;
112   __INT8_TYPE__ i;
113
114   if (sizeof (a) != sizeof (i))
115     return;
116
117   __builtin_memcpy (&i, &a, sizeof (i));
118
119   if (i != 0)
120     abort();
121 }
122
123
124 int main (void)
125 {
126   test_hr();
127   test_k();
128   test_qi();
129   test_si();
130
131   test_0hr();
132   test_0k();
133   test_0qi();
134   test_0si();
135
136   exit (0);
137
138   return 0;
139 }