PR fortran/100633
gcc/fortran/ChangeLog:
* resolve.c (gfc_resolve_code): Reject nonintrinsic assignments in
OMP WORKSHARE.
gcc/testsuite/ChangeLog:
* gfortran.dg/gomp/workshare-59.f90: New test.
(cherry picked from commit
582776eb1b62c32f5234566a01ea92247b7d6bcc)
if (resolve_ordinary_assign (code, ns))
{
+ if (omp_workshare_flag)
+ {
+ gfc_error ("Expected intrinsic assignment in OMP WORKSHARE "
+ "at %L", &code->loc);
+ break;
+ }
if (code->op == EXEC_COMPCALL)
goto compcall;
else
--- /dev/null
+! PR fortran/100633
+
+module defined_assign
+ interface assignment(=)
+ module procedure work_assign
+ end interface
+
+ contains
+ subroutine work_assign(a,b)
+ integer, intent(out) :: a
+ logical, intent(in) :: b(:)
+ end subroutine work_assign
+end module defined_assign
+
+program omp_workshare
+ use defined_assign
+
+ integer :: a
+ logical :: l(10)
+ l = .TRUE.
+
+ !$omp workshare
+ a = l ! { dg-error "Expected intrinsic assignment in OMP WORKSHARE" }
+ !$omp end workshare
+
+end program omp_workshare