[PATCH] RISC-V: Bugfix for unrecognizable insn for XTheadVector
[official-gcc.git] / gcc / testsuite / g++.dg / gomp / attrs-5.C
blobf6d24b9540c600b3d71b3a1031f4e7c20f406b60
1 // { dg-do compile { target c++11 } }
3 typedef struct __attribute__((__aligned__ (sizeof (void *)))) omp_depend_t {
4   char __omp_depend_t__[2 * sizeof (void *)];
5 } omp_depend_t;
7 void
8 foo (int x)
10   #pragma omp barrier
11   [[omp::directive (barrier)]];
12   #pragma omp parallel
13   {
14     #pragma omp cancel parallel
15     [[omp::directive (cancellation point, parallel)]];
16   }
17   #pragma omp parallel
18   {
19     #pragma omp cancellation point parallel
20     [[omp::directive (cancel parallel)]];
21   }
22   #pragma omp parallel
23   {
24     [[omp::directive (cancel, parallel)]];
25     #pragma omp cancellation point parallel
26   }
27   omp_depend_t depobj;
28   #pragma omp depobj(depobj) update(inout)
29   [[omp::directive (depobj(depobj), destroy)]];
30   #pragma omp flush
31   [[omp::directive (flush)]];
32   #pragma omp target enter data map (to: x)
33   [[omp::directive (target exit data, map (from: x))]];
34   [[omp::directive (target enter data, map (to: x))]];
35   #pragma omp target exit data map (from: x)
36   [[omp::directive (flush)]];
37   #pragma omp target update to (x)
38   [[omp::directive (flush)]];
39   #pragma omp taskwait
40   [[omp::directive (flush)]];
41   #pragma omp taskyield
42   [[omp::directive (flush)]];
43   extern int t;
44   #pragma omp threadprivate (t)
45   [[omp::directive (flush)]];