[PATCH][C++] Fix ICE with VTV

Caroline Tice via gcc-patches gcc-patches@gcc.gnu.org
Tue Feb 19 16:54:00 GMT 2019


On Tue, Feb 19, 2019 at 1:57 AM Richard Biener <rguenther@suse.de> wrote:

>
> Looks like vtv_generate_init_routine calls symtab->process_new_functions
> () which has seriously bad effects on GCCs internal memory state.
>
> VTV has zero testsuite coverage it seems and besides its initial
> commit didn't receive any love.
>

I am puzzled by these statements, as neither of them is true.  VTV does
have a testsuite in the libvtv directory.  Naturally you can only run them
when vtv is enabled and only from the libvtv build tree, as they will all
fail if VTV is not enabled.  I have fixed various bugs in VTV since the
initial commit, and I have also approved several patches, especially for
people migrating it to other architectures, suggesting that interest in it
is not zero.



>
> Can we rip it out please?
>
> Is the patch OK?  (Pointless) bootstrap and regtest running on
> x86_64-unknown-linux-gnu.
>
> Has anybody "recently" tried to enable the feature and tested the
> result?
>

I have not tried building it recently, but will do so.  I will review your
patch to see if it makes sense.  I would prefer that VTV not be 'ripped
out' of GCC, and will do whatever I can, within reason, to try to fix its
issues.


>
> Thanks,
> Richard.
>
> 2019-02-19  Richard Biener  <rguenther@suse.de>
>
>         PR middle-end/89392
>         cp/
>         * vtable-class-hierarchy.c (vtv_generate_init_routine): Do not
>         make symtab process new functions here.
>
> Index: gcc/cp/vtable-class-hierarchy.c
> ===================================================================
> --- gcc/cp/vtable-class-hierarchy.c     (revision 269009)
> +++ gcc/cp/vtable-class-hierarchy.c     (working copy)
> @@ -1191,8 +1191,6 @@ vtv_generate_init_routine (void)
>        gimplify_function_tree (vtv_fndecl);
>        cgraph_node::add_new_function (vtv_fndecl, false);
>
> -      symtab->process_new_functions ();
> -
>        if (flag_vtable_verify == VTV_PREINIT_PRIORITY && !TARGET_PECOFF)
>          assemble_vtv_preinit_initializer (vtv_fndecl);
>
>



More information about the Gcc-patches mailing list