OSDN Git Service

2012-02-05 Thomas König <tkoenig@gcc.gnu.org>
authortkoenig <tkoenig@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 5 Feb 2012 20:14:00 +0000 (20:14 +0000)
committertkoenig <tkoenig@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 5 Feb 2012 20:14:00 +0000 (20:14 +0000)
PR fortran/48847
* trans-decl.c:  Warn about unused dummy procedure arguments
if -Wunused-dummy-argument is specified.  Suppress middle-end
warnings about procedure arguments.

2012-02-05  Thomas König  <tkoenig@gcc.gnu.org>

PR fortran/48847
* gfortran.dg/warn_unused_dummy_argument_3.f90:  New test.

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

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

index e1e81b7..4cde6e2 100644 (file)
@@ -1,3 +1,10 @@
+2012-02-05  Thomas König  <tkoenig@gcc.gnu.org>
+
+       PR fortran/48847
+       * trans-decl.c:  Warn about unused dummy procedure arguments
+       if -Wunused-dummy-argument is specified.  Suppress middle-end
+       warnings about procedure arguments.
+
 2012-02-05  Paul Thomas  <pault@gcc.gnu.org>
 
        * trans-array.c (gfc_array_allocate): Zero memory for all class
index cb8f613..e497fd6 100644 (file)
@@ -4683,6 +4683,22 @@ generate_local_decl (gfc_symbol * sym)
          && sym->ts.type == BT_CHARACTER && sym->ts.is_c_interop
          && sym->ns->proc_name != NULL && sym->ns->proc_name->attr.is_bind_c)
        gfc_conv_scalar_char_value (sym, NULL, NULL);
+
+      /* Unused procedure passed as dummy argument.  */
+      if (sym->attr.flavor == FL_PROCEDURE)
+       {
+         if (!sym->attr.referenced)
+           {
+             if (gfc_option.warn_unused_dummy_argument)
+               gfc_warning ("Unused dummy argument '%s' at %L", sym->name,
+                            &sym->declared_at);             
+           }
+
+         /* Silence bogus "unused parameter" warnings from the
+            middle end.  */
+         if (sym->backend_decl != NULL_TREE)
+               TREE_NO_WARNING (sym->backend_decl) = 1;
+       }
     }
 
   /* Make sure we convert the types of the derived types from iso_c_binding
index 4c9c499..306ad5c 100644 (file)
@@ -1,3 +1,8 @@
+2012-02-05  Thomas König  <tkoenig@gcc.gnu.org>
+
+       PR fortran/48847
+       * gfortran.dg/warn_unused_dummy_argument_3.f90:  New test.
+
 2012-02-05  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/52102
diff --git a/gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_3.f90 b/gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_3.f90
new file mode 100644 (file)
index 0000000..f15026e
--- /dev/null
@@ -0,0 +1,18 @@
+! { dg-do compile }
+! { dg-options "-Wunused-dummy-argument -Wunused-parameter" }
+! PR 48847 - we used to generate a warning for g(), and none for h()
+program main
+contains
+  function f(g,h)
+    interface
+       real function g()
+       end function g
+    end interface
+    interface
+       real function h()  !  { dg-warning "Unused dummy argument" }
+       end function h
+    end interface
+    real :: f
+    f = g()
+  end function f
+end program main