// { dg-do run } struct Spec { virtual int id () const = 0; }; class D1_1_Spec : public virtual Spec { }; class D1_2_Spec : public virtual Spec { }; class D1_3_Spec : public virtual Spec { }; class D2_1_Spec : public D1_1_Spec, public D1_2_Spec { }; class D2_Spec : public virtual D2_1_Spec, public virtual D1_3_Spec { }; struct D3_Spec : public D2_Spec { virtual int id () const { return 3; } }; __attribute__((noinline)) void foo(D3_Spec* spec) { spec->id(); } int main() { D3_Spec spec; foo(&spec); return 0; }