http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54224
--- Comment #15 from janus at gcc dot gnu.org 2012-10-20 21:17:54 UTC --- (In reply to comment #14) > (In reply to comment #12) > > * unused-warnings for module variables Here is a draft patch which fixes the test case in comment 14: Index: gcc/fortran/trans-decl.c =================================================================== --- gcc/fortran/trans-decl.c (revision 192619) +++ gcc/fortran/trans-decl.c (working copy) @@ -3999,6 +4001,20 @@ static void && sym->ts.type == BT_DERIVED) sym->backend_decl = gfc_typenode_for_spec (&(sym->ts)); + /* Warn for unused private module variables. */ + if (warn_unused_variable && !sym->attr.referenced + && (sym->attr.access == ACCESS_PRIVATE + || (sym->attr.access == ACCESS_UNKNOWN + && sym->ns->default_access == ACCESS_PRIVATE)) + && !(sym->attr.in_common || sym->attr.use_assoc || sym->mark + || sym->attr.in_namelist || sym->attr.flavor == FL_MODULE)) + { + gfc_warning ("Unused private module variable '%s' declared at %L", + sym->name, &sym->declared_at); + if (sym->backend_decl != NULL_TREE) + TREE_NO_WARNING(sym->backend_decl) = 1; + } + if (sym->attr.flavor == FL_DERIVED && sym->backend_decl && TREE_CODE (sym->backend_decl) == RECORD_TYPE) as well as this extended version (and regtests cleanly): module m integer :: j integer, private :: k ! { dg-error "Unused private module variable" } end module module m2 private real :: r ! { dg-error "Unused private module variable" } real, public :: p end module