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.

Reply via email to