| /* { dg-do compile } */ |
| /* { dg-options "-O2 -fno-inline -fipa-cp-clone" } */ |
| |
| typedef struct { |
| int *ptr; |
| int len; |
| } string; |
| typedef struct { |
| string nantstr; |
| int *nant; |
| } malv; |
| typedef struct { |
| int *nor; |
| } list_heads; |
| int b; |
| list_heads *fn1(string, int *, unsigned); |
| void fn2(malv *p1, list_heads *p2, unsigned p3) { |
| string a = p1->nantstr; |
| fn1(a, p1->nant, p3); |
| } |
| |
| void fn3(unsigned p1) { fn2(0, 0, p1); } |
| |
| list_heads *fn1(string p1, int *p2, unsigned p3) { |
| while (1) { |
| if (p3) |
| fn3(1); |
| if (b) |
| return 0; |
| fn3(1); |
| } |
| } |
| |
| void fn5() { |
| list_heads c; |
| c.nor = 0; |
| fn2(0, &c, 1); |
| } |