/* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-dse1-details" } */ struct a {int a,b,c;}; __attribute__ ((noinline)) void kill_me (struct a *a) { a->a=0; a->b=0; a->c=0; } __attribute__ ((noinline)) int wrap(int b, struct a *a) { kill_me (a); return b; } __attribute__ ((noinline)) void my_pleasure (struct a *a) { a->a=1; a->c=2; } __attribute__ ((noinline)) int wrap2(int b, struct a *a) { my_pleasure (a); return b; } int set (struct a *a) { wrap (0, a); int ret = wrap2 (0, a); a->b=1; return ret; } /* { dg-final { scan-tree-dump "Deleted dead store: wrap" "dse1" } } */