2 /* { dg-options "-O2 -floop-interchange -fdump-tree-linterchange-details" } */
5 int a
[M
][M
], b
[M
][M
], c
[M
][M
], d
[M
][M
];
6 void __attribute__((noinline
))
9 for (int j
= 0; j
< n
; j
++)
10 for (int k
= 0; k
< n
; k
++)
11 for (int i
= 0; i
< n
; i
++)
12 c
[i
][j
] = c
[i
][j
] + a
[i
][k
]*b
[k
][j
];
15 void __attribute__((noinline
))
18 for (int i
= 0; i
< n
; i
++)
20 for (int j
= 0; j
< n
; j
++)
22 for (int k
= 0; k
< n
; k
++)
23 d
[i
][j
] = d
[i
][j
] + a
[i
][k
]*b
[k
][j
];
25 asm volatile ("" ::: "memory");
27 asm volatile ("" ::: "memory");
33 static void __attribute__((noinline
))
36 for (int j
= 0; j
< M
; j
++)
45 static int __attribute__((noinline
))
48 for (int j
= 0; j
< M
; j
++)
49 if (c
[i
][j
] != d
[i
][j
])
57 for (int i
= 0; i
< M
; ++i
)
63 for (int i
= 0; i
< M
; ++i
)
70 /* { dg-final { scan-tree-dump-times "Loop_pair<outer:., inner:.> is interchanged" 2 "linterchange" } } */