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(f4,f3,f2,f1),g2(f4,f4,f3,f2,f1),g3(f4,f3,f2,f1)
8      real*8 f0(f4,f4,f3,f2,f1),f9(f4,f4,f3,f2,f1),f8(f4,f4,f3,f2,f1)
9      real*8 f7(f4,f4,f3,f2,f1),f6(f4,f4,f3,f2,f1),f5(f4,f4,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,f4
21                  g3(i1,i5,i4,i3)=0.0d0
22                  do i2=1,f4
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! This is the kernel extracted from bwaves: this cannot be interchanged
40! as the number of iterations for f4 is not known.
41
42! { dg-final { scan-tree-dump-times "will be interchanged" 0 "graphite" } }
43