! { dg-do run }
! { dg-options "-fdec-structure" }
!
! Test whether union backend declarations are corrently _not_ copied when they
! are not in fact equal. The structure defined in sub() is seen later, but
! where siz has a different value.
!

subroutine aborts (s)
  character(*), intent(in) :: s
  print *, s
  STOP 1
end subroutine

subroutine sub ()
  integer, parameter :: siz = 1024
  structure /s6/
    union ! U0
      map ! M0
        integer ibuf(siz)
      end map
      map ! M1
        character(8) cbuf(siz)
      end map
      map ! M2
        real rbuf(siz)
      end map
    end union
  end structure
  record /s6/ r6
  r6.ibuf(1) = int(z'badbeef')
  r6.ibuf(2) = int(z'badbeef')
end subroutine

! Repeat definition from subroutine sub with different size parameter.
! If the structure definition is copied here the stack may get messed up.
integer, parameter :: siz = 65536
structure /s6/
  union ! U12
    map
      integer ibuf(siz)
    end map
    map
      character(8) cbuf(siz)
    end map
    map
      real rbuf(siz)
    end map
  end union
end structure

record /s6/ r6
integer :: r6_canary = 0

! Copied type declaration - this should not cause problems
i = 1
do while (i < siz)
  r6.ibuf(i) = int(z'badbeef')
  i = i + 1
end do

if ( r6_canary .ne. 0 ) then
  call aborts ('copied decls: overflow')
endif

end
