2 // { dg-options "-O3" }
7 virtual Distraction * return_self ()
14 static A * __attribute__ ((noinline, noclone)) get_an_A ();
23 A (int pi) : fi (pi) {}
24 virtual A * foo (int p) = 0;
28 static B * __attribute__ ((noinline, noclone)) get_a_B ();
30 struct B : public Distraction, A
32 B () : Distraction(), A() { }
33 B (int pi) : Distraction (), A (pi) {}
34 virtual B * foo (int p)
37 for (int i = 0; i < p; i++)
46 struct B gb1 (1111), gb2 (2);
47 static B * __attribute__ ((noinline, noclone))
53 static A * __attribute__ ((noinline, noclone))
61 static int __attribute__ ((noinline, noclone))
67 extern "C" void abort (void);
69 int main (int argc, char *argv[])
71 for (int i = 0; i < get_a_number (); i++)
73 struct A *p = get_an_A ();
74 struct A *r = p->foo (4);