diff options
author | Harald Anlauf <anlauf@gmx.de> | 2019-02-17 21:19:20 +0000 |
---|---|---|
committer | Harald Anlauf <anlauf@gcc.gnu.org> | 2019-02-17 21:19:20 +0000 |
commit | 0f7cec0982a2866f36d17e2ac1c1b05d69e6154d (patch) | |
tree | 9d0429003ce847666f183a45e6f00854304c1587 /gcc | |
parent | e6ca33ba57dd55357cf2fd97c81fd12daca465a3 (diff) | |
download | gcc-0f7cec0982a2866f36d17e2ac1c1b05d69e6154d.zip gcc-0f7cec0982a2866f36d17e2ac1c1b05d69e6154d.tar.gz gcc-0f7cec0982a2866f36d17e2ac1c1b05d69e6154d.tar.bz2 |
re PR fortran/88299 ([F18] COMMON in a legacy module produces bogus warnings in dependent code)
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.
PR fortran/88299
* gfortran.dg/pr88299.f90: New test.
From-SVN: r268974
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/resolve.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr88299.f90 | 16 |
4 files changed, 32 insertions, 5 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index aa474a4..4f150e2 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,5 +1,11 @@ 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 * decl.c (gfc_set_constant_character_len): Clear original string representation after padding has been performed to target length. diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index e215fef..e581a60 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -940,7 +940,11 @@ resolve_common_vars (gfc_common_head *common_block, bool named_common) 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_blocks (gfc_symtree *common_root) 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. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6b2ffa3..9b197cc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2019-02-17 Harald Anlauf <anlauf@gmx.de> + PR fortran/88299 + * gfortran.dg/pr88299.f90: New test. + +2019-02-17 Harald Anlauf <anlauf@gmx.de> + PR fortran/89077 * gfortran.dg/transfer_simplify_12.f90: New test. diff --git a/gcc/testsuite/gfortran.dg/pr88299.f90 b/gcc/testsuite/gfortran.dg/pr88299.f90 new file mode 100644 index 0000000..5471d40 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr88299.f90 @@ -0,0 +1,16 @@ +! { 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 |