1! { dg-do compile } 2! { dg-options "-O -fdump-tree-original" } 3module x 4 implicit none 5contains 6 pure function myfunc(x) result(y) 7 integer, intent(in) :: x 8 integer, dimension(:), allocatable :: y 9 allocate (y(3)) 10 y(1) = x 11 y(2) = 2*x 12 y(3) = 3*x 13 end function myfunc 14 15 pure function mychar(x) result(r) 16 integer, intent(in) :: x 17 character(len=2) :: r 18 r = achar(x + iachar('0')) // achar(x + iachar('1')) 19 end function mychar 20end module x 21 22program main 23 use x 24 implicit none 25 integer :: n 26 character(len=20) :: line 27 n = 3 28 write (unit=line,fmt='(3I2)') myfunc(n) + myfunc(n) 29 if (line /= ' 61218') call abort 30 write (unit=line,fmt='(A)') mychar(2) // mychar(2) 31 if (line /= '2323') call abort 32end program main 33! { dg-final { scan-tree-dump-times "myfunc" 2 "original" } } 34! { dg-final { scan-tree-dump-times "mychar" 2 "original" } } 35! { dg-final { cleanup-tree-dump "original" } } 36