| // PR ipa/68672 |
| // { dg-do compile } |
| // { dg-options "-O3 --param=partial-inlining-entry-probability=100 -g" } |
| |
| struct S { ~S () {} }; |
| S *a, *e; |
| int *b; |
| void bar (); |
| void baz (); |
| void fn (int *); |
| void fn2 (S *); |
| |
| static int |
| foo () |
| { |
| S *c = a; |
| if (c) |
| { |
| bar (); |
| if (a) |
| __builtin_abort (); |
| baz (); |
| } |
| int p = *b; |
| S *f = e; |
| if (p) |
| { |
| fn2 (f); |
| fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); |
| fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); |
| fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); |
| fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); fn (b); |
| } |
| f->~S (); |
| int q = 2 * p; |
| int r = 3 * q; |
| S *d = c; |
| return p; |
| } |
| |
| void |
| use1 () |
| { |
| foo (); |
| } |
| |
| void |
| use2 () |
| { |
| foo (); |
| } |
| |
| void |
| use3 () |
| { |
| foo (); |
| } |