aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2011-08-17 18:31:10 +0200
committerTobias Burnus <burnus@gcc.gnu.org>2011-08-17 18:31:10 +0200
commitdbad8e7176ee00dc98bf84bb41a1b5439d4f4d1f (patch)
treeb6c87518c4460bbff1c20b3ff41532693295bb73 /gcc
parent0d82a1c872bf48069028cf7753b171121991c95c (diff)
downloadgcc-dbad8e7176ee00dc98bf84bb41a1b5439d4f4d1f.zip
gcc-dbad8e7176ee00dc98bf84bb41a1b5439d4f4d1f.tar.gz
gcc-dbad8e7176ee00dc98bf84bb41a1b5439d4f4d1f.tar.bz2
re PR fortran/31461 (warn about entities in USE, ONLY statement not later used)
2011-08-17 Tobias Burnus <burnus@net-b.de> PR fortran/31461 * trans-decl.c (generate_local_decl): Warn about unused explicitly imported module variables/parameters. 2011-08-17 Tobias Burnus <burnus@net-b.de> PR fortran/31461 * gfortran.dg/warn_unused_var_2.f90: New. * gfortran.dg/warn_unused_var_3.f90: New. From-SVN: r177833
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans-decl.c16
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gfortran.dg/warn_unused_var_2.f9019
-rw-r--r--gcc/testsuite/gfortran.dg/warn_unused_var_3.f9015
5 files changed, 58 insertions, 4 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index d7f4b6d..43d011b 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2011-08-17 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/31461
+ * trans-decl.c (generate_local_decl): Warn about
+ unused explicitly imported module variables/parameters.
+
2011-08-17 Janus Weil <janus@gcc.gnu.org>
PR fortran/50070
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index 12c5262..cdbb375 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -4453,6 +4453,9 @@ generate_local_decl (gfc_symbol * sym)
|| sym->attr.in_namelist))
gfc_warning ("Unused variable '%s' declared at %L", sym->name,
&sym->declared_at);
+ else if (warn_unused_variable && sym->attr.use_only)
+ gfc_warning ("Unused module variable '%s' which has been explicitly "
+ "imported at %L", sym->name, &sym->declared_at);
/* For variable length CHARACTER parameters, the PARM_DECL already
references the length variable, so force gfc_get_symbol_decl
@@ -4497,10 +4500,15 @@ generate_local_decl (gfc_symbol * sym)
else if (sym->attr.flavor == FL_PARAMETER)
{
if (warn_unused_parameter
- && !sym->attr.referenced
- && !sym->attr.use_assoc)
- gfc_warning ("Unused parameter '%s' declared at %L", sym->name,
- &sym->declared_at);
+ && !sym->attr.referenced)
+ {
+ if (!sym->attr.use_assoc)
+ gfc_warning ("Unused parameter '%s' declared at %L", sym->name,
+ &sym->declared_at);
+ else if (sym->attr.use_only)
+ gfc_warning ("Unused parameter '%s' which has been explicitly "
+ "imported at %L", sym->name, &sym->declared_at);
+ }
}
else if (sym->attr.flavor == FL_PROCEDURE)
{
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 955764b..9440066 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2011-08-17 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/31461
+ * gfortran.dg/warn_unused_var_2.f90: New.
+ * gfortran.dg/warn_unused_var_3.f90: New.
+
2011-08-17 Tom de Vries <tom@codesourcery.com>
PR target/43597
diff --git a/gcc/testsuite/gfortran.dg/warn_unused_var_2.f90 b/gcc/testsuite/gfortran.dg/warn_unused_var_2.f90
new file mode 100644
index 0000000..7eccc6e
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/warn_unused_var_2.f90
@@ -0,0 +1,19 @@
+! { dg-do compile }
+! { dg-options "-Wunused" }
+!
+! PR fortran/31461
+!
+! Contributed by Vivek Rao.
+!
+
+module util_mod
+ integer :: i,j
+end module util_mod
+
+program main
+ use util_mod, only: i,j ! { dg-warning "Unused module variable .i. which has been explicitly imported" }
+ j = 1
+ print*,"j=",j
+end program main
+
+! { dg-final { cleanup-modules "util_mod" } }
diff --git a/gcc/testsuite/gfortran.dg/warn_unused_var_3.f90 b/gcc/testsuite/gfortran.dg/warn_unused_var_3.f90
new file mode 100644
index 0000000..86a8883
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/warn_unused_var_3.f90
@@ -0,0 +1,15 @@
+! { dg-do compile }
+! { dg-options "-Wunused-parameter" }
+!
+! PR fortran/31461
+!
+module util_mod
+ integer, parameter :: i = 4
+end module util_mod
+
+program main
+ use util_mod, only: i ! { dg-warning "Unused parameter .i. which has been explicitly imported" }
+ integer, parameter :: j = 4 ! { dg-warning "Unused parameter .j. declared at" }
+end program main
+
+! { dg-final { cleanup-modules "util_mod" } }