xfail scan-tree-dump-not throw in g++.dg/pr99966.C on hppa*64*-*-*
[official-gcc.git] / libgomp / testsuite / libgomp.c-c++-common / alloc-9.c
blobb3682ef7161dc8b7713ccffb190e97aa884f0116
1 #include <omp.h>
2 #include <stdint.h>
3 #include <stdlib.h>
5 const omp_alloctrait_t traits2[]
6 = { { omp_atk_alignment, 16 },
7 { omp_atk_sync_hint, omp_atv_default },
8 { omp_atk_access, omp_atv_default },
9 { omp_atk_pool_size, 1024 },
10 { omp_atk_fallback, omp_atv_default_mem_fb },
11 { omp_atk_partition, omp_atv_environment } };
12 omp_alloctrait_t traits3[]
13 = { { omp_atk_sync_hint, omp_atv_uncontended },
14 { omp_atk_alignment, 32 },
15 { omp_atk_access, omp_atv_all },
16 { omp_atk_pool_size, 512 },
17 { omp_atk_fallback, omp_atv_allocator_fb },
18 { omp_atk_fb_data, 0 },
19 { omp_atk_partition, omp_atv_default } };
20 const omp_alloctrait_t traits4[]
21 = { { omp_atk_alignment, 128 },
22 { omp_atk_pool_size, 1024 },
23 { omp_atk_fallback, omp_atv_null_fb } };
25 int
26 main ()
28 int *volatile p = (int *) omp_alloc (3 * sizeof (int), omp_default_mem_alloc);
29 int *volatile q;
30 int *volatile r;
31 omp_alloctrait_t traits[3]
32 = { { omp_atk_alignment, 64 },
33 { omp_atk_fallback, omp_atv_null_fb },
34 { omp_atk_pool_size, 4096 } };
35 omp_alloctrait_t traits5[2]
36 = { { omp_atk_fallback, omp_atv_null_fb },
37 { omp_atk_pool_size, 4096 } };
38 omp_allocator_handle_t a, a2;
40 if ((((uintptr_t) p) % __alignof (int)) != 0)
41 abort ();
42 p[0] = 1;
43 p[1] = 2;
44 p[2] = 3;
45 p = (int *) omp_realloc (p, 4 * sizeof (int), omp_default_mem_alloc, omp_default_mem_alloc);
46 if ((((uintptr_t) p) % __alignof (int)) != 0 || p[0] != 1 || p[1] != 2 || p[2] != 3)
47 abort ();
48 p[0] = 4;
49 p[1] = 5;
50 p[2] = 6;
51 p[3] = 7;
52 p = (int *) omp_realloc (p, 2 * sizeof (int), omp_default_mem_alloc, omp_default_mem_alloc);
53 if ((((uintptr_t) p) % __alignof (int)) != 0 || p[0] != 4 || p[1] != 5)
54 abort ();
55 p[0] = 8;
56 p[1] = 9;
57 if (omp_realloc (p, 0, omp_null_allocator, omp_default_mem_alloc) != NULL)
58 abort ();
59 p = (int *) omp_realloc (NULL, 2 * sizeof (int), omp_default_mem_alloc, omp_null_allocator);
60 if ((((uintptr_t) p) % __alignof (int)) != 0)
61 abort ();
62 p[0] = 1;
63 p[1] = 2;
64 p = (int *) omp_realloc (p, 5 * sizeof (int), omp_default_mem_alloc, omp_default_mem_alloc);
65 if ((((uintptr_t) p) % __alignof (int)) != 0 || p[0] != 1 || p[1] != 2)
66 abort ();
67 p[0] = 3;
68 p[1] = 4;
69 p[2] = 5;
70 p[3] = 6;
71 p[4] = 7;
72 omp_free (p, omp_null_allocator);
73 omp_set_default_allocator (omp_default_mem_alloc);
74 if (omp_realloc (NULL, 0, omp_null_allocator, omp_null_allocator) != NULL)
75 abort ();
76 p = (int *) omp_alloc (sizeof (int), omp_null_allocator);
77 if ((((uintptr_t) p) % __alignof (int)) != 0)
78 abort ();
79 p[0] = 3;
80 p = (int *) omp_realloc (p, 3 * sizeof (int), omp_null_allocator, omp_null_allocator);
81 if ((((uintptr_t) p) % __alignof (int)) != 0 || p[0] != 3)
82 abort ();
83 p[0] = 4;
84 p[1] = 5;
85 p[2] = 6;
86 if (omp_realloc (p, 0, omp_null_allocator, omp_get_default_allocator ()) != NULL)
87 abort ();
88 a = omp_init_allocator (omp_default_mem_space, 3, traits);
89 if (a == omp_null_allocator)
90 abort ();
91 p = (int *) omp_alloc (sizeof (int), a);
92 if ((((uintptr_t) p) % 64) != 0)
93 abort ();
94 p[0] = 7;
95 p = (int *) omp_realloc (p, 3072, a, a);
96 if ((((uintptr_t) p) % 64) != 0 || p[0] != 7)
97 abort ();
98 p[0] = 1;
99 p[3071 / sizeof (int)] = 2;
100 q = (int *) omp_alloc (sizeof (int), a);
101 if ((((uintptr_t) q) % 64) != 0)
102 abort ();
103 q[0] = 8;
104 if (omp_realloc (q, 3072, a, a) != NULL)
105 abort ();
106 omp_free (p, a);
107 omp_free (q, a);
108 p = (int *) omp_alloc (sizeof (int), a);
109 p[0] = 42;
110 p = (int *) omp_realloc (p, 3072, a, a);
111 if (p[0] != 42)
112 abort ();
113 p[0] = 3;
114 p[3071 / sizeof (int)] = 4;
115 omp_realloc (p, 0, omp_null_allocator, omp_null_allocator);
116 omp_set_default_allocator (a);
117 if (omp_get_default_allocator () != a)
118 abort ();
119 p = (int *) omp_alloc (31, omp_null_allocator);
120 if (p == NULL)
121 abort ();
122 p = (int *) omp_realloc (p, 3072, omp_null_allocator, omp_null_allocator);
123 if (p == NULL)
124 abort ();
125 q = (int *) omp_alloc (sizeof (int), omp_null_allocator);
126 if (q == NULL)
127 abort ();
128 if (omp_realloc (q, 3072, omp_null_allocator, omp_null_allocator) != NULL)
129 abort ();
130 omp_free (p, a);
131 omp_free (q, a);
132 omp_destroy_allocator (a);
134 a = omp_init_allocator (omp_default_mem_space, 2, traits5);
135 if (a == omp_null_allocator)
136 abort ();
137 omp_set_default_allocator (a);
138 if (omp_get_default_allocator () != a)
139 abort ();
140 p = (int *) omp_alloc (3071, omp_null_allocator);
141 if (p == NULL)
142 abort ();
143 p = (int *) omp_realloc (p, 3072, omp_null_allocator, omp_null_allocator);
144 if (p == NULL)
145 abort ();
146 q = (int *) omp_alloc (sizeof (int), omp_null_allocator);
147 if (q == NULL)
148 abort ();
149 if (omp_realloc (q, 3072, omp_null_allocator, omp_null_allocator) != NULL)
150 abort ();
151 omp_free (p, a);
152 omp_free (q, a);
153 omp_destroy_allocator (a);
155 a = omp_init_allocator (omp_default_mem_space,
156 sizeof (traits2) / sizeof (traits2[0]),
157 traits2);
158 if (a == omp_null_allocator)
159 abort ();
160 if (traits3[5].key != omp_atk_fb_data)
161 abort ();
162 traits3[5].value = (uintptr_t) a;
163 a2 = omp_init_allocator (omp_default_mem_space,
164 sizeof (traits3) / sizeof (traits3[0]),
165 traits3);
166 if (a2 == omp_null_allocator)
167 abort ();
168 p = (int *) omp_alloc (sizeof (int), a2);
169 if ((((uintptr_t) p) % 32) != 0)
170 abort ();
171 p[0] = 84;
172 p = (int *) omp_realloc (p, 380, a2, a2);
173 if ((((uintptr_t) p) % 32) != 0 || p[0] != 84)
174 abort ();
175 p[0] = 5;
176 p[379 / sizeof (int)] = 6;
177 q = (int *) omp_alloc (sizeof (int), a2);
178 if ((((uintptr_t) q) % 32) != 0)
179 abort ();
180 q[0] = 42;
181 q = (int *) omp_realloc (q, 768, a2, a2);
182 if ((((uintptr_t) q) % 16) != 0 || q[0] != 42)
183 abort ();
184 q[0] = 7;
185 q[767 / sizeof (int)] = 8;
186 r = (int *) omp_realloc (NULL, 512, a2, omp_null_allocator);
187 if ((((uintptr_t) r) % __alignof (int)) != 0)
188 abort ();
189 r[0] = 9;
190 r[511 / sizeof (int)] = 10;
191 omp_free (p, omp_null_allocator);
192 omp_free (q, a2);
193 omp_free (r, omp_null_allocator);
194 p = (int *) omp_alloc (sizeof (int), a2);
195 if ((((uintptr_t) p) % 32) != 0)
196 abort ();
197 p[0] = 85;
198 p = (int *) omp_realloc (p, 320, a, a2);
199 if ((((uintptr_t) p) % 16) != 0 || p[0] != 85)
200 abort ();
201 p[0] = 5;
202 p[319 / sizeof (int)] = 6;
203 q = (int *) omp_alloc (sizeof (int), a);
204 if ((((uintptr_t) q) % 16) != 0)
205 abort ();
206 q[0] = 43;
207 q = (int *) omp_realloc (q, 320, a2, a);
208 if ((((uintptr_t) q) % 32) != 0 || q[0] != 43)
209 abort ();
210 q[0] = 44;
211 q[319 / sizeof (int)] = 8;
212 q = (int *) omp_realloc (q, 568, a2, a2);
213 if ((((uintptr_t) q) % 16) != 0 || q[0] != 44)
214 abort ();
215 q[0] = 7;
216 q[567 / sizeof (int)] = 8;
217 omp_free (p, omp_null_allocator);
218 omp_free (q, a2);
219 omp_destroy_allocator (a2);
220 omp_destroy_allocator (a);
222 a = omp_init_allocator (omp_default_mem_space,
223 sizeof (traits4) / sizeof (traits4[0]),
224 traits4);
225 if (a == omp_null_allocator)
226 abort ();
227 if (traits3[5].key != omp_atk_fb_data)
228 abort ();
229 traits3[5].value = (uintptr_t) a;
230 a2 = omp_init_allocator (omp_default_mem_space,
231 sizeof (traits3) / sizeof (traits3[0]),
232 traits3);
233 if (a2 == omp_null_allocator)
234 abort ();
235 omp_set_default_allocator (a2);
236 #ifdef __cplusplus
237 p = static_cast <int *> (omp_realloc (NULL, 420));
238 #else
239 p = (int *) omp_realloc (NULL, 420, omp_null_allocator, omp_null_allocator);
240 #endif
241 if ((((uintptr_t) p) % 32) != 0)
242 abort ();
243 p[0] = 5;
244 p[419 / sizeof (int)] = 6;
245 q = (int *) omp_realloc (NULL, sizeof (int), omp_null_allocator, omp_null_allocator);
246 if ((((uintptr_t) q) % 32) != 0)
247 abort ();
248 q[0] = 99;
249 q = (int *) omp_realloc (q, 700, omp_null_allocator, omp_null_allocator);
250 if ((((uintptr_t) q) % 128) != 0 || q[0] != 99)
251 abort ();
252 q[0] = 7;
253 q[699 / sizeof (int)] = 8;
254 if (omp_realloc (NULL, 768, omp_null_allocator, omp_null_allocator) != NULL)
255 abort ();
256 #ifdef __cplusplus
257 omp_free (p);
258 if (omp_realloc (q, 0) != NULL)
259 abort ();
260 omp_free (NULL);
261 #else
262 omp_free (p, omp_null_allocator);
263 if (omp_realloc (q, 0, omp_null_allocator, omp_null_allocator) != NULL)
264 abort ();
265 omp_free (NULL, omp_null_allocator);
266 #endif
267 omp_free (NULL, omp_null_allocator);
268 omp_destroy_allocator (a2);
269 omp_destroy_allocator (a);
270 return 0;