https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61654
--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Richard mentioned that #c7 doesn't ICE on the 4.9 branch, only trunk. This one ICEs on the 4.9 branch too (the only change is " = 0", i.e. making A::a pure virtual), again -O3 -m32 is needed: struct A { virtual int a (int, int = 0) = 0; void b (); void c (); int d; }; struct B : virtual A { int a (int, int); int e; }; int f; void A::b () { a (0); } void A::c () { a (f); } int B::a (int, int) { return e; }