blob: 913e4b198c08863b20dbd3f118ac5faec0d61463 [file] [log] [blame]
// PR ipa/69239
// { dg-do run }
// { dg-options "-O2 --param=early-inlining-insns=196" }
// { dg-additional-options "-fPIC" { target fpic } }
struct D
{
float f;
D () {}
virtual float bar (float z);
};
struct A
{
A ();
virtual int foo (int i);
};
struct B : public D, public A
{
virtual int foo (int i);
};
float
D::bar (float)
{
return f / 2;
}
int
A::foo (int i)
{
return i + 1;
}
int
B::foo (int i)
{
return i + 2;
}
int __attribute__ ((noinline,noclone))
baz ()
{
return 1;
}
static int __attribute__ ((noinline))
fn (A *obj, int i)
{
return obj->foo (i);
}
inline __attribute__ ((always_inline))
A::A ()
{
if (fn (this, baz ()) != 2)
__builtin_abort ();
}
static void
bah ()
{
B b;
}
int
main ()
{
bah ();
}