|  | ! { dg-do run } | 
|  | ! | 
|  | ! Test the fix for PR40737 comment 17 as part of the overall fix for PR34640. | 
|  | ! | 
|  | ! Contributed by Josh Hykes  <joshuahykes@yahoo.com> | 
|  | ! | 
|  | module test_mod | 
|  | ! | 
|  | type t1 | 
|  | character(8)  :: string | 
|  | end type t1 | 
|  | ! | 
|  | type t2 | 
|  | integer :: tab | 
|  | type(t1), pointer :: fp(:) | 
|  | end type t2 | 
|  | ! | 
|  | type t3 | 
|  | integer :: tab | 
|  | type(t2), pointer :: as | 
|  | end type t3 | 
|  | ! | 
|  | type(t3), pointer :: as_typ(:) => null() | 
|  | ! | 
|  | character(8),  pointer, public :: p(:) | 
|  | ! | 
|  | contains | 
|  | ! | 
|  | subroutine as_set_alias (i) | 
|  | ! | 
|  | implicit none | 
|  | ! | 
|  | integer, intent(in)    :: i | 
|  | ! | 
|  | allocate (as_typ(2)) | 
|  | allocate (as_typ(1)%as) | 
|  | allocate (as_typ(1)%as%fp(2), source = [t1("abcdefgh"),t1("ijklmnop")]) | 
|  | p => as_typ(i)%as%fp(:)%string | 
|  | ! | 
|  | end subroutine as_set_alias | 
|  | ! | 
|  | end module test_mod | 
|  |  | 
|  | program test_prog | 
|  | use test_mod | 
|  | call as_set_alias(1) | 
|  | if (any (p .ne. ["abcdefgh","ijklmnop"])) STOP 1 | 
|  | deallocate (as_typ(1)%as%fp) | 
|  | deallocate (as_typ(1)%as) | 
|  | deallocate (as_typ) | 
|  | end program test_prog |