http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54884
Bug #: 54884 Summary: [4.8 Regression] Externally used PRIVATE module procedure wrongly marked as TREE_PUBLIC()=0 Classification: Unclassified Product: gcc Version: 4.8.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: fortran AssignedTo: unassig...@gcc.gnu.org ReportedBy: bur...@gcc.gnu.org CC: abenso...@gmail.com As reported by Andrew Benson at http://gcc.gnu.org/ml/fortran/2012-10/msg00046.html: Build the FoX library (http://www1.gly.bris.ac.uk/~walker/FoX/), specifically the version at http://www1.gly.bris.ac.uk/~walker/FoX/source/FoX-4.1.2-full.tar.gz leads to link errors: m_wxml_core.F90:(.text+0x1a2): undefined reference to `__m_common_attrs_MOD_get_value_by_index_len' gfortran 4.8 marks PRIVATE module variables/procedures as TREE_PUBLIC()=0, however, that shouldn't happen if they are externally visible. In that case, they shall be marked as attr.public_used - which seemingly doesn't happen in this case. In ./common/m_common_attrs.F90 one has: module m_common_attrs private !... public :: get_key contains pure function get_key_len(dict, i) result(n) !... end function get_key_len ! ... function get_key(dict, i) result(key) ! ... character(len=get_key_len(dict,i)) :: key end function get_key end module m_common_attrs