1 // { dg-do assemble }
2 // Bug: g++ fails to compare integer constants properly.
3
4 template <int X, int Y>
5 struct Matrix {
6 int base [X] [Y];
7 };
8
9 template <int M,int H,int N>
Mul(Matrix<M,N> & Q,Matrix<M,H> & A,Matrix<H,N> & B)10 Matrix<M,N>& Mul(Matrix<M,N>& Q,Matrix<M,H>& A,Matrix<H,N>& B) {
11 for(int i=0;i<M;i++) {
12 for(int j=0;j<N;j++) {
13 Q.base[i][j]=0;
14 for(int k=0;k<H;k++) {
15 Q.base[i][j]+=A.base[i][k]*B.base[k][j];
16 }
17 }
18 }
19 return Q;
20 }
21
f()22 void f ()
23 {
24 Matrix<2, 3> q;
25 Matrix<2, 4> a;
26 Matrix<4, 3> b;
27 q = Mul (q, a, b);
28 }
29