// Red Hat bugzilla 65210 // { dg-do run } struct A { int a; }; struct B : public virtual A {}; struct C { long double c; }; struct D : public virtual C { int d; }; struct E : public B, public D { int e; }; E e; /* The layout of E should begin with the B-in-E vtable pointer, followed by the D-in-E vtable pointer. The bug was that we used to pad out the D fields for long double alignment. */ int main () { D* dp = &e; unsigned long d_offset = ((char*)dp) - ((char*) &e); return (d_offset != sizeof(void *)); }