https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66521

--- Comment #4 from ctice at gcc dot gnu.org ---
Created attachment 36082
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=36082&action=edit
Tentative patch to fix this issue.

I believe the attached patch will fix this problem.  I would appreciate it if
Eric would confirm that.

ChangeLogs:

gcc/cp/ChangeLog:

        * mangle.c : Add vtable-verify.h to include files.
        (get_mangled_vtable_map_var_name):  If the DECL_ASSEMBLER_NAME
        is "<anon>" get the real mangled name for the class instead, and
        also store the real mangled name in a vector for use later.

gcc/ChangeLog:

        * vtable-verify.c (vtbl_mangled_name_types, vtbl_mangled_name_ids): New
        global variables.
        (vtbl_find_mangled_name):  New function.
        (vtbl_register_mangled_name):  New function.
        (vtbl_map_get_node):  If DECL_ASSEMBLER_NAME is "<anon>", look up
        mangled name in mangled name vectors.
        (find_or_create_vtbl_map_node):  Ditto.
        (var_is_used_for_virtual_call_p):  Add recursion_depth parameter;
        update recursion_depth on function entry; pass it to every recursive
        call; automatically exit if depth > 25 (give up looking at that point).
        (verify_bb_vtables):  Initialize recursion_depth and pass it to
        var_is_used_for_virtual_call_p.
        * vtable-verify.h (vtbl_mangbled_name_types, vtbl_mangled_name_ids):
New
        global variable decls.
        (vtbl_register_mangled_name): New extern function decl.


libvtv/ChangeLog:

        * Makefile.am:  Update to match latest tree.
        * Makefile.in: Regenerate.
        * testsuite/lib/libvtv: Brought up to date.
        * vtv_malloc.cc (VTV_DEBUG): Update function call to match renamed
        function (old bug!).
        * vtv_rts.cc (debug_functions, debug_init, debug_verify_vtable): Update
        initializations to work correctly with VTV_DEBUG defined.

Reply via email to