gfortran-12.0.0-alpha20210516 snapshot (g:4a322345cab10879162a2ddf659fb0f873ba0182) ICEs when compiling the following testcase, extracted from test/Semantics/omp-workshare03.f90 from the flang 12.0.0 test suite, w/ -fopenmp: 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 !$omp end workshare end program omp_workshare % gfortran-12.0.0 -fopenmp -c dd24tjoy.f90 f951: internal compiler error: gfc_trans_omp_workshare(): Bad statement code 0x82f5c9 gfc_report_diagnostic /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/fortran/error.c:782 0x82f5c9 gfc_internal_error(char const*, ...) /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/fortran/error.c:1402 0x9757ea gfc_trans_omp_workshare /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/fortran/trans-openmp.c:6128 0x8f1645 trans_code /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/fortran/trans.c:2209 0x921313 gfc_generate_function_code(gfc_namespace*) /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/fortran/trans-decl.c:6885 0x89a917 translate_all_program_units /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/fortran/parse.c:6370 0x89a917 gfc_parse_file() /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/fortran/parse.c:6639 0x8ee74f gfc_be_parse_file /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/fortran/f95-lang.c:212
Confirmed, it's old, I can see it also with GCC 4.9.0.
The master branch has been updated by Tobias Burnus <burnus@gcc.gnu.org>: https://gcc.gnu.org/g:582776eb1b62c32f5234566a01ea92247b7d6bcc commit r12-827-g582776eb1b62c32f5234566a01ea92247b7d6bcc Author: Tobias Burnus <tobias@codesourcery.com> Date: Mon May 17 13:20:27 2021 +0200 OpenMP/Fortran: Reject nonintrinsic assignments in OMP WORKSHARE [PR100633] 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.
The releases/gcc-11 branch has been updated by Tobias Burnus <burnus@gcc.gnu.org>: https://gcc.gnu.org/g:efb6bda7f5136d59be254b10d2b81ba28be8ecfb commit r11-8428-gefb6bda7f5136d59be254b10d2b81ba28be8ecfb Author: Tobias Burnus <tobias@codesourcery.com> Date: Mon May 17 13:20:27 2021 +0200 OpenMP/Fortran: Reject nonintrinsic assignments in OMP WORKSHARE [PR100633] 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)
FIXED on mainline (GCC 12) and on the GCC 11 branch. Thanks for the report!