https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121362
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- Related: struct s1 { int t, t1; }; struct s3 { struct s1 t; }; struct s2 { struct s3 t; }; void f(int, int); void l(); void g(int a, int b, int *p) { struct s2 c; { struct s1 tmp = {a,b}; c.t.t = tmp; } struct s1 *t = &c.t.t; f(t->t, t->t1); } with {component_ref<t>,component_ref<t>,mem_ref<0B>,addr_expr<&c>} vs {component_ref<t1>,mem_ref<0B>,addr_expr<&c>}