http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60965
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |wrong-code Status|UNCONFIRMED |NEW Last reconfirmed| |2014-04-25 Known to work| |4.8.2, 4.9.0 Summary|IPA: Devirtualization |[4.10 Regression] IPA: |versus placement new |Devirtualization versus | |placement new Ever confirmed|0 |1 --- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- Self-contained reproducer, using -std=c++11 -O2 #include <new> class EmbeddedObject { public: virtual int val() { return 2; } }; class Container { alignas(EmbeddedObject) char buffer[sizeof(EmbeddedObject)]; public: EmbeddedObject *obj() { return (EmbeddedObject*)buffer; } Container() { new (buffer) EmbeddedObject(); } }; Container o; int main() { __builtin_printf("%d\n", o.obj()->val()); }