// PR c++/51669
// { dg-do compile }
// { dg-options "-fopenmp" }

template <typename T> const T & min (const T &, const T &);

void
f1 ()
{
#pragma omp parallel num_threads (min (4, 5))
  ;
}

struct A { A (); ~A (); };
int foo (const A &);

void
f2 ()
{
  int i;
#pragma omp parallel if (foo (A ())) num_threads (foo (A ()))
  ;
#pragma omp task if (foo (A ())) final (foo (A ()))
  ;
#pragma omp for schedule (static, foo (A ()))
  for (i = 0; i < 10; i++)
    ;
#pragma omp parallel for schedule (static, foo (A ())) \
  if (foo (A ())) num_threads (foo (A ()))
  for (i = 0; i < 10; i++)
    ;
}
