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

Reply via email to