1      subroutine foo(f1,f2,f3,f4,f5,f6,f7,f8,f9,f0,g1,g2,g3)
2      implicit none
3      integer f4,f3,f2,f1
4      integer g4,g5,g6,g7,g8,g9
5      integer i1,i2,i3,i4,i5
6
7      real*8 g1(5,f3,f2,f1),g2(5,5,f3,f2,f1),g3(5,f3,f2,f1)
8      real*8 f0(5,5,f3,f2,f1),f9(5,5,f3,f2,f1),f8(5,5,f3,f2,f1)
9      real*8 f7(5,5,f3,f2,f1),f6(5,5,f3,f2,f1),f5(5,5,f3,f2,f1)
10
11      do i3=1,f1
12         g8=mod(i3+f1-2,f1)+1
13         g9=mod(i3,f1)+1
14         do i4=1,f2
15            g6=mod(i4+f2-2,f2)+1
16            g7=mod(i4,f2)+1
17            do i5=1,f3
18               g4=mod(i5+f3-2,f3)+1
19               g5=mod(i5,f3)+1
20               do i1=1,5
21                  g3(i1,i5,i4,i3)=0.0d0
22                  do i2=1,5
23                     g3(i1,i5,i4,i3)=g3(i1,i5,i4,i3)+
24     1                    g2(i1,i2,i5,i4,i3)*g1(i2,i5,i4,i3)+
25     2                    f0(i1,i2,i5,i4,i3)*g1(i2,g5,i4,i3)+
26     3                    f9(i1,i2,i5,i4,i3)*g1(i2,i5,g7,i3)+
27     4                    f8(i1,i2,i5,i4,i3)*g1(i2,i5,i4,g9)+
28     5                    f7(i1,i2,i5,i4,i3)*g1(i2,g4,i4,i3)+
29     6                    f6(i1,i2,i5,i4,i3)*g1(i2,i5,g6,i3)+
30     7                    f5(i1,i2,i5,i4,i3)*g1(i2,i5,i4,g8)
31                  enddo
32               enddo
33            enddo
34         enddo
35      enddo
36      return
37      end
38
39
40! We should be able to interchange this as the number of iterations is
41! known to be 4 in the inner two loops.  See interchange-2.f for the
42! kernel from bwaves.
43
44! { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } }
45