1// PR c/39495
2// { dg-do compile }
3// { dg-options "-fopenmp" }
4
5#define INT_MIN (-__INT_MAX__ - 1)
6#define INT_MAX __INT_MAX__
7#define UINT_MAX (2U * __INT_MAX__ + 1)
8
9int
10foo (void)
11{
12  int i;
13  unsigned int u;
14
15#pragma omp for
16  for (i = INT_MIN + 6; i > INT_MIN + 1; i--)
17    ;
18#pragma omp for
19  for (i = INT_MIN + 6; i >= INT_MIN + 1; i--)
20    ;
21#pragma omp for
22  for (i = INT_MIN + 6; i > INT_MIN; i--)
23    ;
24#pragma omp for
25  for (i = INT_MAX - 6; i < INT_MAX - 1; i++)
26    ;
27#pragma omp for
28  for (i = INT_MAX - 6; i <= INT_MAX - 1; i++)
29    ;
30#pragma omp for
31  for (i = INT_MAX - 6; i < INT_MAX; i++)
32    ;
33#pragma omp for
34  for (u = 6; u > 1; u--)
35    ;
36#pragma omp for
37  for (u = 6; u >= 1; u--)
38    ;
39#pragma omp for
40  for (u = 6; u > 0; u--)
41    ;
42#pragma omp for
43  for (u = UINT_MAX - 6; u < UINT_MAX - 1; u++)
44    ;
45#pragma omp for
46  for (u = UINT_MAX - 6; u <= UINT_MAX - 1; u++)
47    ;
48#pragma omp for
49  for (u = UINT_MAX - 6; u < UINT_MAX; u++)
50    ;
51}
52
53int
54bar (void)
55{
56  int i;
57  unsigned int u;
58
59#pragma omp for
60  for (i = INT_MIN + 6; i > INT_MIN + 1; i -= 2)
61    ;
62#pragma omp for
63  for (i = INT_MIN + 6; i >= INT_MIN + 1; i -= 2)
64    ;
65#pragma omp for
66  for (i = INT_MIN + 6; i > INT_MIN; i -= 2)
67    ;
68#pragma omp for
69  for (i = INT_MAX - 6; i < INT_MAX - 1; i += 2)
70    ;
71#pragma omp for
72  for (i = INT_MAX - 6; i <= INT_MAX - 1; i += 2)
73    ;
74#pragma omp for
75  for (i = INT_MAX - 6; i < INT_MAX; i += 2)
76    ;
77#pragma omp for
78  for (u = 6; u > 1; u -= 2)
79    ;
80#pragma omp for
81  for (u = 6; u >= 1; u -= 2)
82    ;
83#pragma omp for
84  for (u = 6; u > 0; u -= 2)
85    ;
86#pragma omp for
87  for (u = UINT_MAX - 6; u < UINT_MAX - 1; u += 2)
88    ;
89#pragma omp for
90  for (u = UINT_MAX - 6; u <= UINT_MAX - 1; u += 2)
91    ;
92#pragma omp for
93  for (u = UINT_MAX - 6; u < UINT_MAX; u += 2)
94    ;
95}
96