/* PR tree-optimization/65533 */ /* { dg-do compile } */ /* { dg-options "-Ofast -w" } */ struct A { int a[2]; }; struct B { double b[2]; }; struct C { double c[4][1]; }; static inline void bar (struct B *x, double y, double z) { x->b[0] = y; x->b[1] = z; } void baz (struct B *); void foo (struct C *x, struct A *y) { struct B d; bar (&d, x->c[1][0] * y->a[0] + x->c[0][1] * y->a[1] + x->c[0][0] * x->c[0][1], x->c[0][0] * y->a[0] + x->c[0][1] * y->a[1] + x->c[0][1] * y->a[0] + x->c[0][0]); baz (&d); }