! { dg-do run }
!
! Test the fix for PR69834 in which the two derived types below
! had the same hash value and so generated an error in the resolution
! of SELECT TYPE.
!
! Reported by James van Buskirk on clf:
! https://groups.google.com/forum/#!topic/comp.lang.fortran/0bm3E5xJpkM
!
module types
   implicit none
   type CS5SS
      integer x
      real y
   end type CS5SS
   type SQS3C
      logical u
      character(7) v
   end type SQS3C
   contains
      subroutine sub(x, switch)
         class(*), allocatable :: x
         integer :: switch
         select type(x)
            type is(CS5SS)
               if (switch .ne. 1) call abort
            type is(SQS3C)
               if (switch .ne. 2) call abort
            class default
               call abort
         end select
      end subroutine sub
end module types

program test
   use types
   implicit none
   class(*), allocatable :: u1, u2

   allocate(u1,source = CS5SS(2,1.414))
   allocate(u2,source = SQS3C(.TRUE.,'Message'))
   call sub(u1, 1)
   call sub(u2, 2)
end program test
