/* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-dse1-details" } */ struct X { struct A { int a[2]; } b[10]; }; void foo (struct X *x, int i) { struct A a; /* Confuse SRA here with using a variable index, otherwise it will mess with the IL too much. */ a.a[i] = 3; a.a[1] = 0; /* The following store is dead. */ x->b[i].a[0] = 1; x->b[i] = a; } /* { dg-final { scan-tree-dump "Deleted dead store" "dse1" } } */