Commit d20597cb by Thomas Koenig

re PR fortran/48847 (Wrong "unused parameter" warning with interface block)

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  Thomas König  <tkoenig@gcc.gnu.org>

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

From-SVN: r183916
parent 83f42cad
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
......
......@@ -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
......
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
......
! { 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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment