diff options
author | Thomas Koenig <tkoenig@gcc.gnu.org> | 2012-02-05 20:14:00 +0000 |
---|---|---|
committer | Thomas Koenig <tkoenig@gcc.gnu.org> | 2012-02-05 20:14:00 +0000 |
commit | d20597cb758fc46b8ca1de147a99eb9ed4758f7c (patch) | |
tree | a0528138fc85155466228dfccaa174157581b083 /gcc | |
parent | 83f42cad22eb85b74dff0592029b39870795c381 (diff) | |
download | gcc-d20597cb758fc46b8ca1de147a99eb9ed4758f7c.zip gcc-d20597cb758fc46b8ca1de147a99eb9ed4758f7c.tar.gz gcc-d20597cb758fc46b8ca1de147a99eb9ed4758f7c.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/trans-decl.c | 16 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_3.f90 | 18 |
4 files changed, 46 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index e1e81b7..4cde6e2 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -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 diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index cb8f613..e497fd6 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -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 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4c9c499..306ad5c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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 index 0000000..f15026e --- /dev/null +++ b/gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_3.f90 @@ -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 |