On Mon, Feb 28, 2022 at 02:01:03PM +0000, Kwok Cheung Yeung wrote:
> gcc/fortran/
>
> PR fortran/104131
> * openmp.cc (gfc_match_omp_detach): Check that the event handle is not
> an array type.
>
> gcc/testsuite/
>
> PR fortran/104131
> * gfortran.dg/gomp/pr104131.f90: New.
> * gfortran.dg/gomp/pr104131-2.f90: New.
> * gfortran.dg/gomp/task-detach-1.f90: Update expected error message.
> ---
> gcc/fortran/openmp.cc | 5 +++--
> gcc/testsuite/gfortran.dg/gomp/pr104131-2.f90 | 10 ++++++++++
> gcc/testsuite/gfortran.dg/gomp/pr104131.f90 | 10 ++++++++++
> gcc/testsuite/gfortran.dg/gomp/task-detach-1.f90 | 2 +-
> 4 files changed, 24 insertions(+), 3 deletions(-)
> create mode 100644 gcc/testsuite/gfortran.dg/gomp/pr104131-2.f90
> create mode 100644 gcc/testsuite/gfortran.dg/gomp/pr104131.f90
>
> diff --git a/gcc/fortran/openmp.cc b/gcc/fortran/openmp.cc
> index 19142c4d8d0..50a1c476009 100644
> --- a/gcc/fortran/openmp.cc
> +++ b/gcc/fortran/openmp.cc
> @@ -531,9 +531,10 @@ gfc_match_omp_detach (gfc_expr **expr)
> if (gfc_match_variable (expr, 0) != MATCH_YES)
> goto syntax_error;
>
> - if ((*expr)->ts.type != BT_INTEGER || (*expr)->ts.kind !=
> gfc_c_intptr_kind)
> + if ((*expr)->ts.type != BT_INTEGER || (*expr)->ts.kind != gfc_c_intptr_kind
> + || (*expr)->symtree->n.sym->as)
Don't we usually test instead || (*expr)->rank != 0 when testing for
scalars?
Jakub