// { dg-do run } // { dg-options "-O2" } // The size of the construction vtable for YFont in YCoreFont was not // updated to reflect its actual size. On targets with section anchor // support, the vtable for YCoreFont was laid out immediately after // that, but the compiler thought it was about 40 bytes closer to the // anchor than it actually was. extern "C" void abort (void); class refcounted { public: int __refcount; public: refcounted(): __refcount(0) {}; virtual ~refcounted() {} }; class YFont : public virtual refcounted { public: virtual ~YFont() {} virtual int ascent() const = 0; }; struct XFontStruct { }; class YCoreFont : public YFont { public: YCoreFont(char const * name); virtual ~YCoreFont(); virtual int ascent() const { return 2; } private: XFontStruct * fFont; }; YCoreFont::YCoreFont(char const * name) { } YCoreFont::~YCoreFont() { } int foo(YCoreFont *ycf) { return ycf->ascent (); } int main() { YCoreFont ycf(""); if (foo(&ycf) != 2) abort (); return 0; }