On Tue, 4 Feb 2014, Jakub Jelinek wrote: > Hi! > > As described in the PR, while build_function_decl_skip_args > takes care of changing the type from METHOD_TYPE to FUNCTION_TYPE > if removing first argument (this), the FE may have other special arguments > that it is aware of (such as in-charge etc.) and if the this argument > is not removed, but the other arguments are, then the FE can crash > upon seeing such methods. > > Fixed by clearing DECL_LANG_SPECIFIC if we remove any arguments. > > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
Ok, but shouldn't we do that in the copy_node case as well? Two places look like /* Make a new FUNCTION_DECL tree node */ if (!args_to_skip) new_decl = copy_node (old_decl); else new_decl = build_function_decl_skip_args (old_decl, args_to_skip, false); it's no longer a FE created function after all? Richard. > 2014-02-04 Jakub Jelinek <ja...@redhat.com> > > PR tree-optimization/60002 > * cgraphclones.c (build_function_decl_skip_args): Clear > DECL_LANG_SPECIFIC. > > * g++.dg/opt/pr60002.C: New test. > > --- gcc/cgraphclones.c.jj 2014-01-31 22:21:42.911750272 +0100 > +++ gcc/cgraphclones.c 2014-02-03 19:43:30.678941701 +0100 > @@ -390,6 +390,9 @@ build_function_decl_skip_args (tree orig > DECL_BUILT_IN_CLASS (new_decl) = NOT_BUILT_IN; > DECL_FUNCTION_CODE (new_decl) = (enum built_in_function) 0; > } > + /* The FE might have information and assumptions about the other > + arguments. */ > + DECL_LANG_SPECIFIC (new_decl) = NULL; > return new_decl; > } > > --- gcc/testsuite/g++.dg/opt/pr60002.C.jj 2014-02-03 19:43:47.671856267 > +0100 > +++ gcc/testsuite/g++.dg/opt/pr60002.C 2014-02-03 19:43:00.000000000 > +0100 > @@ -0,0 +1,12 @@ > +// PR tree-optimization/60002 > +// { dg-do compile } > +// { dg-options "-O2 -fcompare-debug -fdeclone-ctor-dtor -fipa-cp-clone" } > + > +struct A {}; > + > +struct B : virtual A { B (); ~B (); }; > + > +B::~B () > +{ > + B (); > +} > > Jakub > > -- Richard Biener <rguent...@suse.de> SUSE / SUSE Labs SUSE LINUX Products GmbH - Nuernberg - AG Nuernberg - HRB 16746 GF: Jeff Hawn, Jennifer Guild, Felix Imend"orffer