+2019-02-17 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/88299
+ * resolve.c (resolve_common_blocks,resolve_common_vars): Move
+ check for obsolent COMMON feature in F2018 to better place.
+
2019-02-17 Harald Anlauf <anlauf@gmx.de>
PR fortran/89077
have been ignored to continue parsing.
We do the checks again here. */
if (!csym->attr.use_assoc)
- gfc_add_in_common (&csym->attr, csym->name, &common_block->where);
+ {
+ gfc_add_in_common (&csym->attr, csym->name, &common_block->where);
+ gfc_notify_std (GFC_STD_F2018_OBS, "COMMON block at %L",
+ &common_block->where);
+ }
if (csym->value || csym->attr.data)
{
resolve_common_vars (common_root->n.common, true);
- if (!gfc_notify_std (GFC_STD_F2018_OBS, "COMMON block at %L",
- &common_root->n.common->where))
- return;
-
/* The common name is a global name - in Fortran 2003 also if it has a
C binding name, since Fortran 2008 only the C binding name is a global
identifier. */
--- /dev/null
+! { dg-do compile }
+! { dg-options "-std=f2018" }
+!
+! PR 85839: [F18] COMMON in a legacy module produces bogus warnings
+! in dependent code
+
+module legacy
+ integer :: major, n
+ common /version/ major ! { dg-warning "obsolescent feature" }
+ public :: n
+ private
+end module legacy
+
+module mod1
+ use legacy, only: n ! No warning expected here
+end module mod1