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; i--)	/* { dg-error "invalid controlling predicate" } */
17    ;
18#pragma omp for
19  for (i = INT_MIN + 6; i == INT_MIN; i--)	/* { dg-error "invalid controlling predicate" } */
20    ;
21#pragma omp for
22  for (i = INT_MAX - 6; i != INT_MAX; i++)	/* { dg-error "invalid controlling predicate" } */
23    ;
24#pragma omp for
25  for (i = INT_MAX - 6; i == INT_MAX; i++)	/* { dg-error "invalid controlling predicate" } */
26    ;
27#pragma omp for
28  for (u = 6; u != 0; u--)			/* { dg-error "invalid controlling predicate" } */
29    ;
30#pragma omp for
31  for (u = 6; u == 0; u--)			/* { dg-error "invalid controlling predicate" } */
32    ;
33#pragma omp for
34  for (u = UINT_MAX - 6; u != UINT_MAX; u++)	/* { dg-error "invalid controlling predicate" } */
35    ;
36#pragma omp for
37  for (u = UINT_MAX - 6; u == UINT_MAX; u++)	/* { dg-error "invalid controlling predicate" } */
38    ;
39}
40