Value Range: Add range op for builtin isnormal
[official-gcc.git] / gcc / testsuite / c-c++-common / gomp / depobj-1.c
blob77fd97159aa61464b9cc99b1aa6e95d3b70acc7e
1 typedef struct __attribute__((__aligned__ (sizeof (void *)))) omp_depend_t {
2 char __omp_depend_t__[2 * sizeof (void *)];
3 } omp_depend_t;
5 omp_depend_t bar (void);
6 extern const omp_depend_t cdepobj;
7 extern omp_depend_t depobj;
8 extern omp_depend_t depobja[4];
9 extern omp_depend_t *pdepobj;
10 int a, b, i, j;
12 void
13 f1 (void)
15 #pragma omp depobj(depobj) depend(in : a)
16 #pragma omp depobj(depobj) update(inout)
17 #pragma omp task depend (depobj: depobj)
19 #pragma omp depobj(depobj) destroy
20 #pragma omp task depend (iterator (i=1:3) , depobj: *(depobja + i))
22 #pragma omp depobj(pdepobj[0]) depend(mutexinoutset:a)
23 #pragma omp depobj(*pdepobj) destroy
24 #pragma omp depobj(depobja[0]) depend(inoutset: a)
25 #pragma omp depobj(depobja[0]) update(mutexinoutset)
26 #pragma omp depobj(depobja[0]) update(inoutset)
29 void
30 f2 (void)
32 omp_depend_t depobjb[4];
33 #pragma omp depobj /* { dg-error "expected" } */
34 #pragma omp depobj destroy /* { dg-error "expected" } */
35 #pragma omp depobj (depobj) /* { dg-error "expected 'depend', 'destroy' or 'update' clause" } */
36 #pragma omp depobj (depobj) foobar /* { dg-error "expected 'depend', 'destroy' or 'update' clause" } */
37 #pragma omp depobj(bar ()) update(inout) /* { dg-error "'depobj' expression is not lvalue expression" } */
38 #pragma omp depobj (cdepobj) update(in) /* { dg-error "'const' qualified 'depobj' expression" } */
39 #pragma omp depobj (depobjb) depend(in: a) /* { dg-error "type of 'depobj' expression is not 'omp_depend_t'" } */
40 #pragma omp depobj (pdepobj) depend(in: a) /* { dg-error "type of 'depobj' expression is not 'omp_depend_t'" } */
41 #pragma omp depobj (a) destroy /* { dg-error "type of 'depobj' expression is not 'omp_depend_t'" } */
42 #pragma omp depobj (depobj) depend(depobj:a) /* { dg-error "does not have 'omp_depend_t' type in 'depend' clause with 'depobj' dependence type" } */
43 #pragma omp depobj (depobj) depend(depobj:*depobjb) /* { dg-error "'depobj' dependence type specified in 'depend' clause on 'depobj' construct" } */
44 #pragma omp depobj (depobj) update(foobar) /* { dg-error "expected 'in', 'out', 'inout', 'mutexinoutset' or 'inoutset'" } */
45 #pragma omp depobj (depobj) depend(in: *depobja) /* { dg-error "should not have 'omp_depend_t' type in 'depend' clause with dependence type" } */
46 #pragma omp depobj (depobj) depend(in: a) depend(in: b) /* { dg-error "expected" } */
47 #pragma omp depobj (depobj) depend(in: a) update(out) /* { dg-error "expected" } */
48 #pragma omp depobj (depobj) depend(in: a, b) /* { dg-error "more than one locator in 'depend' clause on 'depobj' construct" } */
49 #pragma omp depobj (depobj) depend(source) /* { dg-error "'depend\\(source\\)' is only allowed in 'omp ordered'" } */
50 #pragma omp depobj (depobj) depend(sink: i + 1, j - 1) /* { dg-error "'depend\\(sink\\)' is only allowed in 'omp ordered'" } */
51 #pragma omp depobj (depobj) depend(iterator (i = 0:2) , in : a) /* { dg-error "'iterator' modifier may not be specified on 'depobj' construct" } */
52 if (0)
53 #pragma omp depobj (depobj) destroy /* { dg-error "'#pragma omp depobj' may only be used in compound statements" } */
57 void
58 f3 (void)
60 #pragma omp task depend (depobj: depobja[1:2]) /* { dg-error "'depend' clause with 'depobj' dependence type on array section" } */
62 #pragma omp task depend (depobj: a) /* { dg-error "'a' does not have 'omp_depend_t' type in 'depend' clause with 'depobj' dependence type" } */
64 #pragma omp task depend (in: depobj) /* { dg-error "'depobj' should not have 'omp_depend_t' type in 'depend' clause with dependence type" } */