2011-08-17 Tobias Burnus <burnus@net-b.de>
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 17 Aug 2011 16:31:10 +0000 (16:31 +0000)
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 17 Aug 2011 16:31:10 +0000 (16:31 +0000)
        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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@177833 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/trans-decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/warn_unused_var_2.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/warn_unused_var_3.f90 [new file with mode: 0644]

index d7f4b6d..43d011b 100644 (file)
@@ -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
index 12c5262..cdbb375 100644 (file)
@@ -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)
     {
index 955764b..9440066 100644 (file)
@@ -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 (file)
index 0000000..7eccc6e
--- /dev/null
@@ -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 (file)
index 0000000..86a8883
--- /dev/null
@@ -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" } }