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