1// PR middle-end/29965
2// Test that OpenMP construct bodies which never return don't cause ICEs.
3// { dg-do compile }
4// { dg-options "-O2 -fopenmp" }
5
6extern void baz () __attribute__ ((noreturn));
7
8void
9foo1 ()
10{
11#pragma omp sections
12  {
13    for (;;)
14      ;
15  }
16}
17
18void
19bar1 ()
20{
21#pragma omp sections
22  {
23#pragma omp section
24    baz ();
25#pragma omp section
26    baz ();
27  }
28}
29
30void
31foo2 ()
32{
33#pragma omp sections
34  {
35    ;
36#pragma omp section
37    for (;;)
38      ;
39  }
40}
41
42void
43bar2 ()
44{
45#pragma omp sections
46  {
47#pragma omp section
48    baz ();
49#pragma omp section
50    ;
51  }
52}
53
54void
55foo3 ()
56{
57#pragma omp parallel sections
58  {
59    for (;;)
60      ;
61  }
62}
63
64void
65bar3 ()
66{
67#pragma omp parallel sections
68  {
69#pragma omp section
70    baz ();
71#pragma omp section
72    baz ();
73  }
74}
75
76void
77foo4 ()
78{
79#pragma omp parallel sections
80  {
81    ;
82#pragma omp section
83    for (;;)
84      ;
85  }
86}
87
88void
89bar4 ()
90{
91#pragma omp parallel sections
92  {
93#pragma omp section
94    baz ();
95#pragma omp section
96    ;
97  }
98}
99