Message ID | 5C61F28C.1070002@gmx.de |
---|---|
State | New |
Headers | show |
Series | [PR,fortran/88299] - [F18] COMMON in a legacy module produces bogus warnings in dependent code | expand |
Ping! On 02/11/19 23:09, Harald Anlauf wrote: > The attached patch moves the check for this F2018 obsolescent feature > to a better place where the warning is only emitted when the COMMON is > declared. No warning should be emitted when such a legacy module is > simply used. > > Regtested on x86_64-pc-linux-gnu. > > OK for trunk? > > Thanks, > Harald > > 2019-02-11 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-11 Harald Anlauf <anlauf@gmx.de> > > PR fortran/88299 > * gfortran.dg/pr88299.f90: New test. > Regards, Harald
Hi Harald, > Ping! > On 02/11/19 23:09, Harald Anlauf wrote: >> The attached patch moves the check for this F2018 obsolescent feature >> to a better place where the warning is only emitted when the COMMON is >> declared. No warning should be emitted when such a legacy module is >> simply used. >> >> Regtested on x86_64-pc-linux-gnu. >> >> OK for trunk? OK. Thanks for the patch! Regards Thomas
Committed as rev. 268974. Thanks for the review! Harald On 02/17/19 21:40, Thomas Koenig wrote: > Hi Harald, > >> Ping! > >> On 02/11/19 23:09, Harald Anlauf wrote: >>> The attached patch moves the check for this F2018 obsolescent feature >>> to a better place where the warning is only emitted when the COMMON is >>> declared. No warning should be emitted when such a legacy module is >>> simply used. >>> >>> Regtested on x86_64-pc-linux-gnu. >>> >>> OK for trunk? > > > OK. > > Thanks for the patch! > > Regards > > Thomas >
Index: gcc/fortran/resolve.c =================================================================== --- gcc/fortran/resolve.c (revision 268778) +++ gcc/fortran/resolve.c (working copy) @@ -940,7 +940,11 @@ 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) { @@ -998,10 +1002,6 @@ 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. */