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

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I had further look at this.  E.g. build_over_call's nargs = 2 in:
      if (ctor_omit_inherited_parms (fn))
        nargs = 2;
is seen in inh-ctor23.C, inh-ctor24.C and inh-ctor28.C testcases.
Looking at these testcases and checking where the current tree-inline.c
COND_EXPR with folded to INTEGER_CST condition, I see one conditional clobber
(non-interesting), one call to some constructor with nameless PARM_DECLs and
one case where __vtt_parm parameter is used.  None of these contain user
labels, so worst case scanning for user labels in the tree-inline.c code might
work.
Anyway, what I see is that in the complete ctor during the tree-inline.c body
copying the __vtt_parm is replaced with 0 and (unexpectedly) the base ctor has
the unnamed extra params like the complete ctor.  So I don't see why things
wouldn't work with the tree-inline.c changes reverted.  Unless the extra
arguments from the base ctor are meant to be removed.

Reply via email to