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  
       9  int
      10  foo (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  
      53  int
      54  bar (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  }