1! { dg-do run } 2! 3! Tests the fix for a bug that was found in the course of fixing PR87566. 4! 5! Contributed by Paul Thomas <pault@gcc.gnu.org> 6! 7 call AddArray 8contains 9 subroutine AddArray() 10 type Object_array_pointer 11 class(*), pointer :: p(:) => null() 12 end type Object_array_pointer 13 14 type (Object_array_pointer) :: obj 15 character(3), target :: tgt1(2) = ['one','two'] 16 character(5), target :: tgt2(2) = ['three','four '] 17 real, target :: tgt3(3) = [1.0,2.0,3.0] 18 19 obj%p => tgt1 20 associate (point => obj%p) 21 select type (point) ! Used to ICE here. 22 type is (character(*)) 23 if (any (point .ne. tgt1)) stop 1 24 end select 25 point => tgt2 26 end associate 27 28 select type (z => obj%p) 29 type is (character(*)) 30 if (any (z .ne. tgt2)) stop 2 31 end select 32 33 obj%p => tgt3 34 associate (point => obj%p) 35 select type (point) 36 type is (real) 37 if (any (point .ne. tgt3)) stop 3 38 end select 39 end associate 40 end subroutine AddArray 41end 42