// { PR tree-optimization/34063 } // { dg-do compile } // { dg-options "-O2" } struct S { double e[9]; double const & operator() (int r, int c) const { return e[r * 3 + c]; } }; void foo() { S r; double *p; for (int j = 0; j < 3; j++) for (int k = 0; k < 3; k++) for (int l = k + 1; l < 3; l++) *p++ = r (k, 0) * r (l, j) + r (k, j) * r (l, 0); }