c { dg-do run }
* g77 0.5.23 and previous had bugs involving too little space
* allocated for EQUIVALENCE and COMMON areas needing initial
* padding to meet alignment requirements of the system.

      call subr
      end

      subroutine subr
      implicit none

      real r1(5), r2(5), r3(5)
      real s1(2), s2(2), s3(2)
      double precision d1, d2, d3
      integer i1, i2, i3
      equivalence (d1, r1(2))
      equivalence (r1, s1(2))
      equivalence (d2, r2(2))
      equivalence (r2, s2(2))
      equivalence (d3, r3(2))
      equivalence (r3, s3(2))

      s1(1) = 1.
      r1(1) = 1.
      d1 = 10.
      r1(4) = 1.
      r1(5) = 1.
      i1 = 1
      s2(1) = 2.
      r2(1) = 2.
      d2 = 20.
      r2(4) = 2.
      r2(5) = 2.
      i2 = 2
      s3(1) = 3.
      r3(1) = 3.
      d3 = 30.
      r3(4) = 3.
      r3(5) = 3.
      i3 = 3

      call x (s1, r1, d1, i1, s2, r2, d2, i2, s3, r3, d3, i3)

      end

      subroutine x (s1, r1, d1, i1, s2, r2, d2, i2, s3, r3, d3, i3)
      implicit none

      real r1(5), r2(5), r3(5)
      real s1(2), s2(2), s3(2)
      double precision d1, d2, d3
      integer i1, i2, i3

      if (s1(1) .ne. 1.) call abort
      if (r1(1) .ne. 1.) call abort
      if (d1 .ne. 10.) call abort
      if (r1(4) .ne. 1.) call abort
      if (r1(5) .ne. 1.) call abort
      if (i1 .ne. 1) call abort
      if (s2(1) .ne. 2.) call abort
      if (r2(1) .ne. 2.) call abort
      if (d2 .ne. 20.) call abort
      if (r2(4) .ne. 2.) call abort
      if (r2(5) .ne. 2.) call abort
      if (i2 .ne. 2) call abort
      if (s3(1) .ne. 3.) call abort
      if (r3(1) .ne. 3.) call abort
      if (d3 .ne. 30.) call abort
      if (r3(4) .ne. 3.) call abort
      if (r3(5) .ne. 3.) call abort
      if (i3 .ne. 3) call abort

      end
