1! { dg-do compile }
2! { dg-options "-fdump-tree-original" }
3!
4! PR fortran/54608
5!
6! Contributed by James Van Buskirk
7!
8module m1
9   implicit none
10   contains
11      subroutine s1(A)
12         logical A
13         integer iscan, iverify
14         character(7), parameter :: tf(2) = ['.FALSE.','.TRUE. ']
15
16         iscan = scan('AA','A',back=A)
17         iverify = verify('xx','A',back=A)
18         if (iscan /= 2 .or. iverify /= 2) call abort ()
19         print *, iverify, iscan
20!         write(*,'(a)') 'SCAN test: A = '//trim(tf(iscan)) ! should print true
21!         write(*,'(a)') 'VERIFY test: A = '//trim(tf(iverify)) ! should print true
22      end subroutine s1
23end module m1
24
25program p1
26   use m1
27   implicit none
28   logical B
29
30   call s1(.TRUE.)
31end program p1
32
33! { dg-final { scan-tree-dump-times "iscan = _gfortran_string_scan \\(2," 1 "original" } }
34! { dg-final { scan-tree-dump-times "iverify = _gfortran_string_verify \\(2," 1 "original" } }
35! { dg-final { cleanup-tree-dump "original" } }
36