aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/c-c++-common/gomp/nesting-2.c
blob: 7a03430311df77d7f6bda9463189e337751a47a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
void
foo (void)
{
  int i;
  #pragma omp taskloop
  for (i = 0; i < 64; i++)
    {
      int j;
      #pragma omp for			/* { dg-error "region may not be closely nested inside of" } */
      for (j = 0; j < 10; j++)
	;
      #pragma omp single		/* { dg-error "region may not be closely nested inside of" } */
      ;
      #pragma omp sections		/* { dg-error "region may not be closely nested inside of" } */
      {
	#pragma omp section
	;
      }
      #pragma omp barrier		/* { dg-error "region may not be closely nested inside of" } */
      #pragma omp master		/* { dg-error "region may not be closely nested inside of" } */
      ;
      #pragma omp ordered		/* { dg-error "region may not be closely nested inside of" } */
      ;
      #pragma omp ordered threads	/* { dg-error "region may not be closely nested inside of" } */
      ;
      #pragma omp ordered simd threads	/* { dg-error ".ordered. .simd. must be closely nested inside .simd. region" } */
      ;
      #pragma omp simd
      for (j = 0; j < 10; j++)
	#pragma omp ordered simd
	  ;
      #pragma omp critical
      {
	#pragma omp simd
	for (j = 0; j < 10; j++)
	  #pragma omp ordered simd
	    ;
      }
    }
  #pragma omp taskloop
  for (i = 0; i < 64; i++)
    #pragma omp parallel
    {
      int j;
      #pragma omp for
      for (j = 0; j < 10; j++)
	;
      #pragma omp single
      ;
      #pragma omp sections
      {
	#pragma omp section
	;
      }
      #pragma omp barrier
      #pragma omp master
      ;
      #pragma omp ordered		/* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
      ;
      #pragma omp ordered threads	/* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
      ;
      #pragma omp simd
      for (j = 0; j < 10; j++)
	#pragma omp ordered simd
	  ;
      #pragma omp critical
      {
	#pragma omp simd
	for (j = 0; j < 10; j++)
	  #pragma omp ordered simd
	    ;
      }
    }
  #pragma omp taskloop
  for (i = 0; i < 64; i++)
    #pragma omp target
    {
      int j;
      #pragma omp for
      for (j = 0; j < 10; j++)
	;
      #pragma omp single
      ;
      #pragma omp sections
      {
	#pragma omp section
	;
      }
      #pragma omp barrier
      #pragma omp master
      ;
      #pragma omp ordered		/* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
      ;
      #pragma omp ordered threads	/* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
      ;
      #pragma omp simd
      for (j = 0; j < 10; j++)
	#pragma omp ordered simd
	  ;
      #pragma omp critical
      {
	#pragma omp simd
	for (j = 0; j < 10; j++)
	  #pragma omp ordered simd
	    ;
      }
    }
  #pragma omp ordered
  {
    #pragma omp ordered			/* { dg-error "region may not be closely nested inside of" } */
    ;
  }
  #pragma omp ordered threads
  {
    #pragma omp ordered			/* { dg-error "region may not be closely nested inside of" } */
    ;
  }
  #pragma omp ordered
  {
    #pragma omp ordered threads		/* { dg-error "region may not be closely nested inside of" } */
    ;
  }
  #pragma omp ordered threads
  {
    #pragma omp ordered threads		/* { dg-error "region may not be closely nested inside of" } */
    ;
  }
  #pragma omp critical
  {
    #pragma omp ordered simd		/* { dg-error ".ordered. .simd. must be closely nested inside .simd. region" } */
    ;
  }
  #pragma omp for ordered
  for (i = 0; i < 64; i++)
    #pragma omp parallel
    {
      #pragma omp ordered threads	/* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
      ;
    }
  #pragma omp for ordered
  for (i = 0; i < 64; i++)
    #pragma omp parallel
    {
      #pragma omp ordered		/* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
      ;
    }
  #pragma omp for ordered(1)
  for (i = 0; i < 64; i++)
    #pragma omp parallel
    {
      #pragma omp ordered depend(source)	/* { dg-error ".ordered. construct with .depend. clause must be closely nested inside a loop with .ordered. clause with a parameter" } */
      #pragma omp ordered depend(sink: i - 1)	/* { dg-error ".ordered. construct with .depend. clause must be closely nested inside a loop with .ordered. clause with a parameter" } */
    }
}