$cat test3.f90 MODULE TEST3 PRIVATE
CHARACTER(LEN=80) :: TESTCHAR INTEGER :: TESTINT REAL :: TESTREAL COMMON /TESTCOMMON1/ TESTCHAR COMMON /TESTCOMMON2/ TESTINT COMMON /TESTCOMMON3/ TESTREAL END MODULE TEST3 $cat test2.f90 MODULE TEST2 USE TEST3 PRIVATE CHARACTER(LEN=80) :: TESTCHAR INTEGER :: TESTINT REAL :: TESTREAL COMMON /TESTCOMMON1/ TESTCHAR COMMON /TESTCOMMON2/ TESTINT COMMON /TESTCOMMON3/ TESTREAL PUBLIC TESTCHAR END MODULE TEST2 $cat test1.f90 PROGRAM TEST1 USE TEST2 WRITE(*,*) TESTCHAR END PROGRAM TEST1 then when I compile it with gfortran it get the following problem $gfortran -o test3.o -g -c test3.f90 $gfortran -o test2.o -g -c test2.f90 $gfortran -o test1.o -g -c test1.f90 $gfortran -o test1 -g test1.o test2.o test3.o test1.o: In function `test1': /data/test1.f90:6: undefined reference to `__test2_MOD_testchar' collect2: ld returned 1 exit status make: *** [test1] Error 1 $ gfortran -v Using built-in specs. Target: x86_64-redhat-linux Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --enable-plugin --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-cpu=generic --build=x86_64-redhat-linux Thread model: posix gcc version 4.3.2 20081105 (Red Hat 4.3.2-7) (GCC) If I comment out the USE TEST3 line in test2.f90 then all is fine. The test code also compiles and links without any problems with the intel and IBM compilers. Given that everything is private in TEST3 then my understanding is that it shouldn't matter if TEST2 uses it or not? Is this a compiler bug or my misunderstanding of the use of COMMON blocks inside PRIVATE modules? Reported in http://groups.google.com/group/comp.lang.fortran/browse_thread/thread/ca3ef24d9bf2afb8# by Chris Bradley -- Summary: [Regression, 4.4, 4.3] PUBLIC/PRIVATE Common blocks Product: gcc Version: 4.3.2 Status: UNCONFIRMED Keywords: rejects-valid Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: pault at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38657