https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89423
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |lto CC| |hubicka at gcc dot gnu.org, | |rguenth at gcc dot gnu.org --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Also doing > make check-target-libvtv RUNTESTFLAGS="--target_board=unix/-flto" reveals FAIL: libvtv.cc/bb_tests.cc -O2 -fvtable-verify=std (internal compiler error) FAIL: libvtv.cc/bb_tests.cc -O2 -fvtable-verify=std (test for excess errors) FAIL: libvtv.cc/const_vtable.cc -O2 -fvtable-verify=std (internal compiler error) FAIL: libvtv.cc/const_vtable.cc -O2 -fvtable-verify=std (test for excess errors) FAIL: libvtv.cc/nested_vcall_test.cc -O2 -fvtable-verify=std (internal compiler error) FAIL: libvtv.cc/nested_vcall_test.cc -O2 -fvtable-verify=std (test for excess errors) FAIL: libvtv.cc/template-list-iostream.cc -O2 -fvtable-verify=std (internal compiler error) FAIL: libvtv.cc/template-list-iostream.cc -O2 -fvtable-verify=std (test for excess errors) FAIL: libvtv.cc/thunk_vtable_map_attack.cc -O2 -fvtable-verify=std (internal compiler error) FAIL: libvtv.cc/thunk_vtable_map_attack.cc -O2 -fvtable-verify=std (test for excess errors) FAIL: libvtv.cc/virtfunc-test.cc -O2 -fvtable-verify=std (internal compiler error) FAIL: libvtv.cc/virtfunc-test.cc -O2 -fvtable-verify=std (test for excess errors) FAIL: libvtv.cc/bb_tests.cc -O2 -fvtable-verify=preinit (internal compiler error) FAIL: libvtv.cc/bb_tests.cc -O2 -fvtable-verify=preinit (test for excess errors) FAIL: libvtv.cc/const_vtable.cc -O2 -fvtable-verify=preinit (internal compiler error) FAIL: libvtv.cc/const_vtable.cc -O2 -fvtable-verify=preinit (test for excess errors) FAIL: libvtv.cc/nested_vcall_test.cc -O2 -fvtable-verify=preinit (internal compiler error) FAIL: libvtv.cc/nested_vcall_test.cc -O2 -fvtable-verify=preinit (test for excess errors) FAIL: libvtv.cc/template-list-iostream.cc -O2 -fvtable-verify=preinit (internal compiler error) FAIL: libvtv.cc/template-list-iostream.cc -O2 -fvtable-verify=preinit (test for excess errors) FAIL: libvtv.cc/thunk_vtable_map_attack.cc -O2 -fvtable-verify=preinit (internal compiler error) FAIL: libvtv.cc/thunk_vtable_map_attack.cc -O2 -fvtable-verify=preinit (test for excess errors) FAIL: libvtv.cc/virtfunc-test.cc -O2 -fvtable-verify=preinit (internal compiler error) FAIL: libvtv.cc/virtfunc-test.cc -O2 -fvtable-verify=preinit (test for excess errors) Running /space/rguenther/src/svn/trunk/libvtv/testsuite/libvtv.mempool.cc/mempool.exp ... Running /space/rguenther/src/svn/trunk/libvtv/testsuite/libvtv.mt.cc/mt.exp ... === libvtv Summary === # of expected passes 152 # of unexpected failures 24 # of unresolved testcases 12 All ICEs are: internal compiler error: in verify_bb_vtables, at vtable-verify.c:708 I suspect that since the vtable-verify pass runs pretty late (right before RTL expansion) it relies on some global data structure that is not streamed / rebuilt in the late LTO LTRANS phase. I guess for this and the original bug the issue is that the vtable verify code is a "second class citizen" and not integated with the symbol table code. I wonder whether keying everything to the actual vtable object would work? It would be a bit ugly to marshal the vtable verify stuff through the generic tree type streaming.