https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111880
Bug ID: 111880 Summary: [9/10/11/12/13] False positive warning of obsolescent COMMON block with Fortran submodule Product: gcc Version: 13.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: zed.three at gmail dot com Target Milestone: --- Created attachment 56152 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=56152&action=edit Minimal source code demonstrating issue. Compiler Explorer link with complete reproducer: https://godbolt.org/z/dd45enhWe module third_party_module integer :: some_param common /not_my_code/ some_param end module third_party_module module foo use third_party_module interface module subroutine bar() end subroutine bar end interface end module foo submodule (foo) foo_submod contains module procedure bar end procedure bar end submodule foo_submod Compiling the above minimal program like: gfortran -std=f2018 -c foo.f90 gives the following warnings: foo.f90:3:22: 3 | common /not_my_code/ some_param | 1 Warning: Fortran 2018 obsolescent feature: COMMON block at (1) foo.f90:14:14: 14 | submodule (foo) foo_submod | 1 Warning: Fortran 2018 obsolescent feature: COMMON block at (1) The first warning is expected, but the second one is a false positive. I came across this when building with a library outside of my control, so I cannot remove the problem common block (actually this was with MPI, and it happens with all the major implementations as the common block is required for technical reasons). If the submodule is removed, the extra warning disappears. The warning also appears when building the submodule separately (in a different file and having already built the parent module). It also only appears to be this warning, and not other F2018 obsolescent feature warnings (e.g. labeled DO statements), or other warnings enabled at `-Wall` for instance.