https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69649
Bug ID: 69649 Summary: [6 Regression] ICE in assign_temp Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: jakub at gcc dot gnu.org Target Milestone: --- Following testcase (reduced from LibreOffice) ICEs at -O2 starting with r232167. struct A { virtual void m1 (); }; struct C : A { void m1 () { m1 (); } }; template <class T> struct B { T *t; B (T *x) : t (x) { if (t) t->m1 (); } B (const B &); }; struct D : public C {}; struct F : public D { virtual B<D> m2 (); virtual B<D> m3 (); int m4 (); }; struct G : F { B<D> m2 (); B<D> m3 (); }; B<D> G::m2 () { if (m4 () == 0) return this; return 0; } B<D> G::m3 () { if (m4 () == 0) return this; return 0; }