http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58177
Bug ID: 58177 Summary: Incorrect warning message about unused PRIVATE module variable Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: abensonca at gmail dot com With gfortran 4.9.0 (r201758) the following incorrectly reports than the variable "m" in module "b" is unused: module a logical :: m end module a module b logical, private :: m contains subroutine bb() use a m=.true. end subroutine bb end module b $ gfortran -v Using built-in specs. COLLECT_GCC=gfortran COLLECT_LTO_WRAPPER=/home/abenson/Galacticus/Tools/libexec/gcc/x86_64-unknown-linux-gnu/4.9.0/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: ../gcc-trunk/configure --prefix=/home/abenson/Galacticus/Tools --enable-languages=c,c++,fortran --disable-multilib --with-gmp=/home/abenson/Galacticus/Tools Thread model: posix gcc version 4.9.0 20130815 (experimental) (GCC) $ gfortran -c bug.F90 -o bug.o -Wall bug.F90:5.23: logical, private :: m 1 Warning: Unused PRIVATE module variable 'm' declared at (1) The variable "m" in module "b" is used. The problem seems to be related to the presence of a PUBLIC variable with the same name in another USEd module. Changing the name of the variable in the USEd module makes the warning go away. Renaming the imported variable with: use a, only : mm => m results in a correct warning: Warning: Unused module variable 'm' which has been explicitly imported at (1) and causes the "Unused PRIVATE" warning to go away.