1// { dg-do compile } 2// { dg-options "--param max-unroll-times=32" } 3 4struct A {}; 5A **q; 6struct B 7{ 8 A **j; 9 B () { j = q; } 10 A *& operator[] (unsigned long x) { return j[x]; } 11}; 12struct C 13{ 14 C (int r) : v (), s (r) {} 15 A *& operator () (int i, int j) { return v[i * s + j]; } 16 B v; 17 int s; 18}; 19struct D 20{ 21 D () 22 { 23 unsigned h = 2; 24 for (int i = 0; i < 1; ++i, h *= 2) 25 { 26 C w (h); 27 for (unsigned j = 0; j < h; ++j) 28 for (unsigned k = 0; k < h; ++k) 29 w (j, k) = new A; 30 } 31 } 32}; 33void 34foo () 35{ 36 for (int i = 0; i < 3; i++) 37 A (), A (), D (); 38} 39