! { dg-do compile }
! { dg-additional-options "-ffrontend-optimize" }
! PR 90344 - this used to ICE.
! Test case by Urban Jost.
module M_xterm
contains
   elemental function func1(ch) result(res)
      character,intent(in) :: ch
      logical              :: res
      res=.true.
   end function func1
   elemental function func2(ch) result(res)
      character,intent(in) :: ch
      logical              :: res
      res=.false.
   end function func2
   pure function s2a(string)  RESULT (array)
      character(len=*),intent(in) :: string
      character(len=1)            :: array(len(string))
      forall(i=1:len(string)) array(i) = string(i:i)
   end function s2a
   subroutine sub1()
      write(*,*)all(func1(s2a('ABCDEFG')).or.func2(s2a('ABCDEFG')))
   end subroutine sub1
end module M_xterm