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.