sched1: debug/model: dump predecessor list and BB num [NFC]
[gcc.git] / libgomp / testsuite / libgomp.c++ / private-2.C
blobaa472cb62ee099448c2a65847b62435df84f4981
1 /* PR c++/110347 */
3 #include <omp.h>
5 struct t {
6   int A;
7   void f (int dev);
8 };
10 void
11 t::f (int dev)
13   int B = 49;
15   A = 7;
16   #pragma omp parallel private(A) if(0) shared(B) default(none)
17   {
18     A = 5;
19     B = A;
20   }
21   if (A != 7) { __builtin_printf("ERROR 1: %d (!= 7) omp parallel\n", A); __builtin_abort (); }
22   if (B != 5) { __builtin_printf("ERROR 1a: %d\n", B); __builtin_abort (); }
23   A = 8; B = 49;
24   #pragma omp parallel private(A)if(0) shared(B) default(none)
25   {
26     A = 6;
27     B = A;
28   }
29   if (A != 8) { __builtin_printf("ERROR 2: %d (!= 8) omp parallel\n", A); __builtin_abort (); }
30   if (B != 6) { __builtin_printf("ERROR 2a: %d\n", B); __builtin_abort (); }
31   A = 8; B = 49;
33   #pragma omp target private(A) map(from:B) device(dev)
34   {
35     A = 7;
36     B = A;
37   }
38   if (A != 8) { __builtin_printf("ERROR 3: %d (!= 8) omp target\n", A); __builtin_abort (); }
39   if (B != 7) { __builtin_printf("ERROR 3a: %d\n", B); __builtin_abort (); }
40   A = 9; B = 49;
41   #pragma omp target private(A) map(from:B) device(dev)
42   {
43     A = 8;
44     B = A;
45   }
46   if (A != 9) { __builtin_printf("ERROR 4: %d (!= 9) omp target\n", A); __builtin_abort (); }
47   if (B != 8) { __builtin_printf("ERROR 4a: %d\n", B); __builtin_abort (); }
51 template <typename T>
52 struct tt {
53   T C;
54   void g (int dev);
57 template <typename T>
58 void
59 tt<T>::g (int dev)
61   T D = 49;
62   C = 7;
63   #pragma omp parallel private(C) if(0) shared(D) default(none)
64   {
65     C = 5;
66     D = C;
67   }
68   if (C != 7) { __builtin_printf("ERROR 1: %d (!= 7) omp parallel\n", C);__builtin_abort (); }
69   if (D != 5) { __builtin_printf("ERROR 1a: %d\n", D);__builtin_abort (); }
70   C = 8; D = 49;
71   #pragma omp parallel private(C)if(0) shared(D) default(none)
72   {
73     C = 6;
74     D = C;
75   }
76   if (C != 8) { __builtin_printf("ERROR 2: %d (!= 8) omp parallel\n", C);__builtin_abort (); }
77   if (D != 6) { __builtin_printf("ERROR 2a: %d\n", D);__builtin_abort (); }
78   C = 8; D = 49;
79   #pragma omp target private(C) map(from:D) defaultmap(none) device(dev)
80   {
81     C = 7;
82     D = C;
83   }
84   if (C != 8) { __builtin_printf("ERROR 3: %d (!= 8) omp target\n", C);__builtin_abort (); }
85   if (D != 7) { __builtin_printf("ERROR 3a: %d\n", D);__builtin_abort (); }
86   C = 9; D = 49;
87   #pragma omp target private(C) map(from:D) defaultmap(none) device(dev)
88   {
89     C = 8;
90     D = C;
91   }
92   if (C != 9) { __builtin_printf("ERROR 4: %d (!= 9) omp target\n", C); __builtin_abort (); }
93   if (D != 8) { __builtin_printf("ERROR 4a: %d\n", D); }
96 void
97 foo ()
99   struct t x;
100   for (int dev = 0; dev <= omp_get_num_devices (); dev++)
101     x.f (dev);
104 void
105 bar ()
107   struct tt<int> y;
108   for (int dev = 0; dev <= omp_get_num_devices (); dev++)
109     y.g (dev);
113 main ()
115   foo ();
116   bar ();