http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47873
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |wrong-code Summary|[4.6 Regression] Multiple |[4.6 Regression] virtual |Inheritance - Covariant |Inheritance - Covariant |Virtual Function - Segfault |Virtual Function - Segfault --- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-02-25 13:07:26 UTC --- minimal testcase with no namespaces or multiple inheritance the segfault goes away if Ent is an empty class or if virtual inheritance isn't used struct Base { virtual ~Base(){} virtual Base& This() { return *this; } }; struct Ent : virtual Base { void *m_Body; Ent& This() { return *this; } virtual Ent& body() { return This(); } }; struct Msg : virtual Ent { Msg() { body(); } Msg& This() { return *this; } }; int main() { Msg m; return 0; } miscompiled by gcc-4.6-20110219 snapshot Program received signal SIGSEGV, Segmentation fault. 0x0000000000000000 in ?? () (gdb) bt #0 0x0000000000000000 in ?? () #1 0x00000000004007ff in Ent::body (this=0x7fffffffe598) at bug.cc:17 #2 0x00000000004009ca in Msg::Msg (this=0x7fffffffe590, __in_chrg=<value optimized out>, __vtt_parm=<value optimized out>) at bug.cc:27 #3 0x0000000000400719 in main () at bug.cc:35