! 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