blob: 9fd580b15345fed9c6ce54b404c7415165d34b0b [file] [log] [blame]
! { dg-do run }
!
! PR fortran/38657, in which the mixture of PRIVATE and
! COMMON in TEST4, would mess up the association with
! TESTCHAR in TEST2.
!
! Contributed by Paul Thomas <pault@gcc.gnu.org>
! From a report in clf by Chris Bradley.
!
MODULE TEST4
PRIVATE
CHARACTER(LEN=80) :: T1 = &
"Mary had a little lamb, Its fleece was white as snow;"
CHARACTER(LEN=80) :: T2 = &
"And everywhere that Mary went, The lamb was sure to go."
CHARACTER(LEN=80) :: TESTCHAR
COMMON /TESTCOMMON1/ TESTCHAR
PUBLIC T1, T2, FOOBAR
CONTAINS
subroutine FOOBAR (CHECK)
CHARACTER(LEN=80) :: CHECK
IF (TESTCHAR .NE. CHECK) STOP 1
end subroutine
END MODULE TEST4
MODULE TEST3
CHARACTER(LEN=80) :: TESTCHAR
COMMON /TESTCOMMON1/ TESTCHAR
END MODULE TEST3
MODULE TEST2
use TEST4
USE TEST3, chr => testchar
PRIVATE
CHARACTER(LEN=80) :: TESTCHAR
COMMON /TESTCOMMON1/ TESTCHAR
PUBLIC TESTCHAR, FOO, BAR, CHR, T1, T2, FOOBAR
contains
subroutine FOO
TESTCHAR = T1
end subroutine
subroutine BAR (CHECK)
CHARACTER(LEN=80) :: CHECK
IF (TESTCHAR .NE. CHECK) STOP 2
IF (CHR .NE. CHECK) STOP 3
end subroutine
END MODULE TEST2
PROGRAM TEST1
USE TEST2
call FOO
call BAR (T1)
TESTCHAR = T2
call BAR (T2)
CALL FOOBAR (T2)
END PROGRAM TEST1