aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorThomas Koenig <tkoenig@gcc.gnu.org>2012-04-06 18:31:11 +0000
committerThomas Koenig <tkoenig@gcc.gnu.org>2012-04-06 18:31:11 +0000
commit631cfe30838acc834c38a7ce89339e144f49000f (patch)
treee9fae2ca038d08d08fb64a68e8ee0475e0814346 /gcc
parent5f250b068e74cb7b6170ae033f725a9e4ce3af1c (diff)
downloadgcc-631cfe30838acc834c38a7ce89339e144f49000f.zip
gcc-631cfe30838acc834c38a7ce89339e144f49000f.tar.gz
gcc-631cfe30838acc834c38a7ce89339e144f49000f.tar.bz2
re PR fortran/52668 (Incorrect unused warning for USE associating variable in common block)
2012-04-06 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/52668 * module.c: Only mark symbols as use_only if they have been imported via an only list. 2012-04-06 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/52668 * gfortran.dg/use_only_6.f90: New test. From-SVN: r186199
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog8
-rw-r--r--gcc/fortran/module.c19
-rw-r--r--gcc/testsuite/ChangeLog9
-rw-r--r--gcc/testsuite/gfortran.dg/use_only_6.f9013
4 files changed, 46 insertions, 3 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 4a79df8..050f25e 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2012-04-06 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/52668
+ * module.c: Only mark symbols as use_only if they have been
+ imported via an only list.
+
2012-03-28 Paul Thomas <pault@gcc.gnu.org>
Tobias Burnus <burnus@gcc.gnu.org>
@@ -5,7 +11,7 @@
* match.c (gfc_match_allocate, gfc_match_deallocate): Change
"not.. or" to "neither.. nor".
* parse.c (decode_specification_statement): Correct error in
- chpice of matching function for "allocatable".
+ chpice of matching function for "allocatable".
2012-03-23 Janne Blomqvist <jb@gcc.gnu.org>
diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c
index 05ed2a2..60a74ca 100644
--- a/gcc/fortran/module.c
+++ b/gcc/fortran/module.c
@@ -4389,9 +4389,24 @@ load_needed (pointer_info *p)
/* Mark as only or rename for later diagnosis for explicitly imported
but not used warnings; don't mark internal symbols such as __vtab,
- __def_init etc. */
+ __def_init etc. Only mark them if they have been explicitly loaded. */
+
if (only_flag && sym->name[0] != '_' && sym->name[1] != '_')
- sym->attr.use_only = 1;
+ {
+ gfc_use_rename *u;
+
+ /* Search the use/rename list for the variable; if the variable is
+ found, mark it. */
+ for (u = gfc_rename_list; u; u = u->next)
+ {
+ if (strcmp (u->use_name, sym->name) == 0)
+ {
+ sym->attr.use_only = 1;
+ break;
+ }
+ }
+ }
+
if (p->u.rsym.renamed)
sym->attr.use_rename = 1;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index cd043f2..3d67560 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,12 @@
+2012-04-06 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/52668
+ * gfortran.dg/use_only_6.f90: New test.
+
+2012-04-06 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/52668
+ * gfortran.dg/use_only_6.f90: New test.
2012-04-06 Mike Stump <mikestump@comcast.net>
PR testsuite/50722
diff --git a/gcc/testsuite/gfortran.dg/use_only_6.f90 b/gcc/testsuite/gfortran.dg/use_only_6.f90
new file mode 100644
index 0000000..bc15fdb
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/use_only_6.f90
@@ -0,0 +1,13 @@
+! { dg-do compile }
+! PR 52668 - there used to be a bogus warning about not using b.
+! Original test case by Arnaud Desitter.
+module mm
+ integer :: a, b
+ common /mm1/ a, b
+end module mm
+
+subroutine aa()
+ use mm, only: a
+ implicit none
+ a = 1
+end subroutine aa