152
|
1 // PR ipa/93621
|
|
2 // { dg-do compile }
|
|
3 // { dg-options "-O3 --param ipa-cp-eval-threshold=100 --param large-function-growth=60 --param large-function-insns=10 --param uninlined-thunk-insns=1000" }
|
|
4
|
|
5 typedef enum { X } E;
|
|
6 struct A {
|
|
7 virtual void bar ();
|
|
8 };
|
|
9 struct B {
|
|
10 virtual E fn (const char *, int, int *) = 0;
|
|
11 };
|
|
12 struct C : A, B {
|
|
13 E fn (const char *, int, int *);
|
|
14 void fn2 ();
|
|
15 B *foo;
|
|
16 };
|
|
17 void C::fn2 () {
|
|
18 if (!foo)
|
|
19 return;
|
|
20 foo->fn (0, 0, 0);
|
|
21 }
|
|
22 E
|
|
23 C::fn (const char *, int, int *)
|
|
24 {
|
|
25 fn2 ();
|
|
26 foo = 0;
|
|
27 fn (0, 0, 0);
|
|
28 return X;
|
|
29 }
|