| /* { dg-do compile } */ |
| /* { dg-options "-O3 -fdump-ipa-cp-details -fno-early-inlining --param ipa-cp-max-recursive-depth=8 --param ipa-cp-eval-threshold=1" } */ |
| |
| struct V { |
| int f0; |
| int f1; |
| }; |
| |
| int data[100]; |
| |
| int fn (); |
| |
| int recur_fn (struct V * __restrict v) |
| { |
| int i = v->f0; |
| int j = v->f1; |
| struct V t; |
| |
| if (j > 100) |
| { |
| fn (); |
| return 1; |
| } |
| |
| data[i] = i; |
| |
| t.f0 = i - 2; |
| t.f1 = j + 1; |
| |
| recur_fn (&t); |
| |
| return i * j; |
| } |
| |
| int main () |
| { |
| struct V v; |
| |
| v.f0 = 1; |
| v.f1 = 3; |
| return recur_fn (&v); |
| } |
| |
| /* { dg-final { scan-ipa-dump-times "Creating a specialized node of recur_fn/\[0-9\]*\\." 8 "cp" } } */ |