/* { dg-do compile } */
/* { dg-options "-O -fopenmp -fdump-tree-ompexp" } */
/* LLVM LOCAL test not applicable */
/* { dg-require-fdump "" } */

void
foo (int *a, int i)
{
  int j, k = 1, l = 30, m = 4;
#pragma omp parallel for num_threads (3 * i) schedule (dynamic, i * 4)
  for (j = 0; j <= l; j++)
    a[j] = 1;
#pragma omp parallel for num_threads (3 * i) schedule (dynamic, i * 4)
  for (j = k; j <= l; j += (m - 1))
    a[j] = 2;
#pragma omp parallel for num_threads (3 * i) schedule (dynamic, 4)
  for (j = 0; j <= l; j++)
    a[j] = 3;
#pragma omp parallel for num_threads (3 * i) schedule (dynamic, 4)
  for (j = k; j <= l; j += (m - 1))
    a[j] = 4;
}

void
bar (int *a, int i)
{
  int j, k = 1, l = 30, m = 4;
#pragma omp parallel for num_threads (3 * i) schedule (guided, i * 4)
  for (j = 0; j <= l; j++)
    a[j] = 1;
#pragma omp parallel for num_threads (3 * i) schedule (guided, i * 4)
  for (j = k; j <= l; j += (m - 1))
    a[j] = 2;
#pragma omp parallel for num_threads (3 * i) schedule (guided, 4)
  for (j = 0; j <= l; j++)
    a[j] = 3;
#pragma omp parallel for num_threads (3 * i) schedule (guided, 4)
  for (j = k; j <= l; j += (m - 1))
    a[j] = 4;
}

/* { dg-final { scan-tree-dump-times "GOMP_parallel_loop_dynamic_start" 4 "ompexp" { xfail *-*-* } } } */
/* { dg-final { scan-tree-dump-times "GOMP_parallel_loop_guided_start" 4 "ompexp" { xfail *-*-* } } } */
/* { dg-final { cleanup-tree-dump "ompexp" } } */
