/* PR rtl-optimization/42475 */ /* { dg-do compile } */ /* { dg-options "-O2" } */ typedef struct { float x, y; } B; typedef struct { float z; } C; typedef struct { B b; C c; } D; B foo (float x, float y) { B b = { .x = x, .y = y }; return b; } B bar (B b, B y) { return foo (y.x + b.x, b.y); } B baz (D p) { D d = { }; B y = bar (foo (0, (p.c.z) / 2), d.b); return y; }