http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51578

             Bug #: 51578
           Summary: [4.3/4.4/4.5/4.6/4.7 Regression]
    Classification: Unclassified
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Keywords: rejects-valid
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: bur...@gcc.gnu.org


Reported by Billy Backer at http://gcc.gnu.org/ml/fortran/2011-12/msg00093.html

The program uses (sub2):
  use mod2  ! Imports "mod1" and provides "axx"
  use mod1, oxx=>axx
but using "axx" fails:
  print*,axx
           1
  Error: Symbol 'axx' at (1) has no IMPLICIT type

It works if one reverts the order (sub1).

I could not find anything in the standard which indicates that not both symbols
are imported. I wonder whether it is related to:
  use mod1, oxx=>axx
  use mod1
in that case "axx" is not imported. (Cf. paragraph 7 of Fortran 2008's "11.2.2
The USE statement and use association").

See also http://j3-fortran.org/pipermail/j3/2011-December/004944.html


module mod1
integer :: axx=2
end module mod1

module mod2
use mod1
end module mod2

subroutine sub1
use mod1, oxx=>axx
use mod2
implicit none
print*,axx?? !line compiles OK for gfortran, fails for Intel
end subroutine sub1

subroutine sub2
use mod2
use mod1, oxx=>axx
implicit none
print*,axx??!line fails to compile for gfortran, OK for Intel
end subroutine sub2

Reply via email to