| /* { dg-do compile } */ | |
| /* { dg-options "-O2 -fdump-tree-dse2-details" } */ | |
| /* { dg-final { scan-tree-dump-not "Deleted dead store" "dse2" } } */ | |
| struct foo { unsigned long bar; }; | |
| unsigned y; | |
| static int __attribute__ ((__noinline__, __noclone__)) | |
| wrapped (struct foo *p, int i); | |
| static int wrapper (struct foo *p); | |
| static int __attribute__ ((__noclone__)) | |
| wrapper (struct foo *p) { | |
| return wrapped (p, 1); | |
| } | |
| static int __attribute__ ((__noinline__, __noclone__)) | |
| dind (struct foo **pp); | |
| int __attribute__ ((__noclone__, __no_reorder__)) | |
| xfn () { | |
| struct foo x = { 0xBADC0FFE }; | |
| struct foo *p = &x; | |
| return dind (&p); | |
| } | |
| static int __attribute__ ((__noinline__, __no_reorder__)) | |
| wrapped (struct foo *p, int i) { | |
| return p->bar + i == y++; | |
| } | |
| static int __attribute__ ((__noinline__, __noclone__, __no_reorder__)) | |
| dind (struct foo **pp) { | |
| wrapper (*pp); | |
| return 0; | |
| } |