text: ! PR middle-end/49308
  ! { dg-do compile }
  ! { dg-options "-O2 -funroll-loops -g" }
  
  subroutine foo(n, b, d, e)
    type t
      integer :: f
    end type t
    type s
      type(t), pointer :: g
    end type s
    type u
      type(s), dimension(:), pointer :: h
    end type
    integer :: i, k, n
    type(u), pointer :: a, e
    character(len=250) :: b, c, d
    logical :: l
    do i = 1, n
      j = i - 1
      if (j/=0) c = trim(b) // adjustl(d(j))
    end do
    a => e
    do k = 1, size(a%h)
       l = (a%h(k)%g%f == a%h(1)%g%f)
       if (.not.(l)) call bar()
    enddo
  end subroutine foo
  