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: [email protected]
ReportedBy: [email protected]
CC: [email protected]
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