From: Tobias Burnus Date: Wed, 17 Aug 2011 16:31:10 +0000 (+0200) Subject: re PR fortran/31461 (warn about entities in USE, ONLY statement not later used) X-Git-Tag: releases/gcc-4.7.0~4419 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=dbad8e7176ee00dc98bf84bb41a1b5439d4f4d1f;p=thirdparty%2Fgcc.git re PR fortran/31461 (warn about entities in USE, ONLY statement not later used) 2011-08-17 Tobias Burnus PR fortran/31461 * trans-decl.c (generate_local_decl): Warn about unused explicitly imported module variables/parameters. 2011-08-17 Tobias Burnus PR fortran/31461 * gfortran.dg/warn_unused_var_2.f90: New. * gfortran.dg/warn_unused_var_3.f90: New. From-SVN: r177833 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index d7f4b6d37d50..43d011b6326c 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2011-08-17 Tobias Burnus + + PR fortran/31461 + * trans-decl.c (generate_local_decl): Warn about + unused explicitly imported module variables/parameters. + 2011-08-17 Janus Weil PR fortran/50070 diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 12c5262218dc..cdbb3752e3fa 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 955764bd9358..9440066fc1b9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2011-08-17 Tobias Burnus + + 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 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 000000000000..7eccc6e6c1f5 --- /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 000000000000..86a888321f7a --- /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" } }