/* { dg-do compile } */
/* Testcase by Martin Michlmayr <tbm@cyrius.com> */

class Matrix
{
  public:
    double data[4][4];
    Matrix operator* (const Matrix matrix) const;
    void makeRotationAboutVector (void);
};
void Matrix::makeRotationAboutVector (void)
{
   Matrix irx;
   *this = irx * (*this);
}
Matrix Matrix::operator* (const Matrix matrix) const
{
  Matrix ret;
  for (int i = 0; i < 4; i++)
    for (int j = 0; j < 4; j++)
      ret.data[j][i] = matrix.data[j][2] + matrix.data[j][3];
  return ret;
}

