module_equivalence_2.f90   [plain text]


! { dg-do run }
! Tests the fix for PR27269 and PR27xxx.
! The former caused a segfault in trying to process
! module b, with an unused equivalence in a. The latter
! produced an assembler error due to multiple declarations
! for a module equivalence, when one of the variables was
! initialized, as M in module a.
!
module a
  integer, parameter :: dp = selected_real_kind (10)
  real(dp) :: reM, M = 1.77d0
  equivalence (M, reM)
end module a

module b
  use a, only : dp
end module b

  use a
  use b
  if (reM .ne. 1.77d0) call abort ()
  reM = 0.57d1
  if (M .ne. 0.57d1) call abort ()
end