https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92728
Bug ID: 92728 Summary: [OpenMP][OpenACC] Common-block name clause matching issues: common block needs to be defined before + blank common not supported Product: gcc Version: 10.0 Status: UNCONFIRMED Keywords: openacc, openmp Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: burnus at gcc dot gnu.org Target Milestone: --- Based on the discussion at https://gcc.gnu.org/ml/gcc-patches/2019-11/threads.html#00717 The current clause matching code in openmp.c's gfc_match_omp_variable_list does: m = gfc_match (" / %n /", n); … st = gfc_find_symtree (gfc_current_ns->common_root, n); if (st == NULL) { gfc_error ("COMMON block /%s/ not found at %C", n); Hence: (1) This code requires the ordering common /name/ … !$omp … (/name/) !$acc … (/name/) while it would be (also) natural to use !$omp … (/name/) !$acc … (/name/) common /name/ … The Fortran standard usually permits this and at least part of the OpenXXX specs talk only about the specification section, not imposing any ordering. * Blank commons (i.e. common blocks without a name) cannot be matched. Regarding blank commons: neither OpenMP nor OpenACC are clear whether they are permitted and where. – However, in some clauses, OpenMP explicitly mentions that blank commons are not permitted, implying that they are permitted elsewhere. (See linked emails in the thread.)