https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86412
Bug ID: 86412 Summary: lto1: internal compiler error: in lto_symtab_prevailing_virtual_decl, at lto/lto-symtab.c Product: gcc Version: 8.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: lto Assignee: unassigned at gcc dot gnu.org Reporter: skvadrik at gmail dot com CC: marxin at gcc dot gnu.org Target Milestone: --- Created attachment 44354 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=44354&action=edit minimal reproducer Minimal reproducer (bug.cpp in attach): template <typename> class a; template <typename> class b; class c { virtual bool d(); }; template <typename> class e : c { public: template <typename f> e(f); }; Crash: $ g++ -flto bug.cpp -O2 lto1: internal compiler error: in lto_symtab_prevailing_virtual_decl, at lto/lto-symtab.c:1085 0x741dea lto_symtab_prevailing_virtual_decl(tree_node*) /usr/src/debug/sys-devel/gcc-8.1.0-r3/gcc-8.1.0/gcc/lto/lto-symtab.c:1084 0x734977 lto_symtab_prevailing_decl(tree_node*) /usr/src/debug/sys-devel/gcc-8.1.0-r3/gcc-8.1.0/gcc/lto/lto-symtab.h:53 0x734977 lto_fixup_prevailing_decls /usr/src/debug/sys-devel/gcc-8.1.0-r3/gcc-8.1.0/gcc/lto/lto.c:2678 0x734977 lto_fixup_decls /usr/src/debug/sys-devel/gcc-8.1.0-r3/gcc-8.1.0/gcc/lto/lto.c:2744 0x734977 read_cgraph_and_symbols /usr/src/debug/sys-devel/gcc-8.1.0-r3/gcc-8.1.0/gcc/lto/lto.c:2989 0x734977 lto_main() /usr/src/debug/sys-devel/gcc-8.1.0-r3/gcc-8.1.0/gcc/lto/lto.c:3401 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://bugs.gentoo.org/> for instructions. lto-wrapper: fatal error: g++ returned 1 exit status compilation terminated. /usr/lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../x86_64-pc-linux-gnu/bin/ld: error: lto-wrapper failed collect2: error: ld returned 1 exit status Notes: - no crash with -O1 or -O0 - GCC-9 built on 01st of July 2018 also crashes (the assert line is now 1076) - I attach a large file (bug.cpp.orig) that can be used to check the fix (the original crash happened on a large proprietary project)