OSDN Git Service

212c8fbd491f6b830e16005d80c346b0ce81050e
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gfortran.dg / function_optimize_7.f90
1 ! { dg-do compile }
2 ! { dg-options "-O -fdump-tree-original -Warray-temporaries" }
3 subroutine xx(n, m, a, b, c, d, x, z, i, s_in, s_out)
4   implicit none
5   integer, intent(in) :: n, m
6   real, intent(in), dimension(n,n) :: a, b, c
7   real, intent(out), dimension(n,n) :: d
8   real, intent(in), dimension(n,m) :: s_in
9   real, intent(out), dimension(m) :: s_out
10   integer, intent(out) :: i
11   real, intent(inout) :: x
12   real, intent(out) :: z
13   character(60) :: line
14   real, external :: ext_func
15   interface
16      elemental function element(x)
17        real, intent(in) :: x
18        real :: elem
19      end function element
20      pure function mypure(x)
21        real, intent(in) :: x
22        integer :: mypure
23      end function mypure
24      elemental impure function elem_impure(x)
25        real, intent(in) :: x
26        real :: elem_impure
27      end function elem_impure
28   end interface
29
30   d = matmul(a,b) + matmul(a,b)    ! { dg-warning "Creating array temporary" }
31   z = sin(x) + cos(x) + sin(x) + cos(x)
32   x = ext_func(a) + 23 + ext_func(a)
33   z = element(x) + element(x)
34   i = mypure(x) - mypure(x)
35   z = elem_impure(x) - elem_impure(x)
36   s_out = sum(s_in,1) + 3.14 / sum(s_in,1) ! { dg-warning "Creating array temporary" }
37 end subroutine xx
38 ! { dg-final { scan-tree-dump-times "matmul_r4" 1 "original" } }
39 ! { dg-final { scan-tree-dump-times "__builtin_sinf" 1 "original" } }
40 ! { dg-final { scan-tree-dump-times "__builtin_cosf" 1 "original" } }
41 ! { dg-final { scan-tree-dump-times "ext_func" 2 "original" } }
42 ! { dg-final { scan-tree-dump-times "element" 1 "original" } }
43 ! { dg-final { scan-tree-dump-times "mypure" 1 "original" } }
44 ! { dg-final { scan-tree-dump-times "elem_impure" 2 "original" } }
45 ! { dg-final { scan-tree-dump-times "sum_r4" 1 "original" } }
46 ! { dg-final { cleanup-tree-dump "original" } }