2017-09-21 Cesar Philippidis gcc/fortran/ * openmp.c (gfc_match_oacc_wait): Don't restrict wait directive arguments to constant integers. gcc/testsuite/ * gfortran.dg/goacc/wait.f90: New test. diff --git a/gcc/fortran/openmp.c b/gcc/fortran/openmp.c index 8400354181c..c5e00888bbe 100644 --- a/gcc/fortran/openmp.c +++ b/gcc/fortran/openmp.c @@ -2185,8 +2185,7 @@ gfc_match_oacc_wait (void) } if (!gfc_resolve_expr (el->expr) - || el->expr->ts.type != BT_INTEGER || el->expr->rank != 0 - || el->expr->expr_type != EXPR_CONSTANT) + || el->expr->ts.type != BT_INTEGER || el->expr->rank != 0) { gfc_error ("WAIT clause at %L requires a scalar INTEGER expression", &el->expr->where); diff --git a/gcc/testsuite/gfortran.dg/goacc/wait.f90 b/gcc/testsuite/gfortran.dg/goacc/wait.f90 new file mode 100644 index 00000000000..9cdbcdf822e --- /dev/null +++ b/gcc/testsuite/gfortran.dg/goacc/wait.f90 @@ -0,0 +1,12 @@ +! Ensure that ACC WAIT accept integer arguments. + +subroutine foo (wqueue) + implicit none + integer :: wqueue, waitno + integer, parameter :: waitp = 100 + + !$acc wait (wqueue) + !$acc wait (waitno) + !$acc wait (waitp) + !$acc wait (0) +end subroutine foo