[Bug fortran/54884] New: [4.8 Regression] Externally used PRIVATE module procedure wrongly marked as TREE_PUBLIC()=0

burnus at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Oct 10 07:30:00 GMT 2012


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: unassigned@gcc.gnu.org
        ReportedBy: burnus@gcc.gnu.org
                CC: abensonca@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



More information about the Gcc-bugs mailing list