Richard's question is that inlining should deal with extra arguments just fine -- those paths (the insane profile case) won't be executed anyway. Do you have a case showing otherwise (i.e., the mismatch upsets the compiler?)
David On Tue, Jun 4, 2013 at 8:07 AM, Dehao Chen <de...@google.com> wrote: > On Tue, Jun 4, 2013 at 3:56 AM, Richard Biener > <richard.guent...@gmail.com> wrote: >> >> On Tue, Jun 4, 2013 at 2:55 AM, Dehao Chen <de...@google.com> wrote: >> > Hi, >> > >> > This patch was committed to google branch. But I think it is of >> > general interest. So is it ok for trunk? >> > >> > Thanks, >> > Dehao >> > >> > gcc/ChangeLog: >> > >> > 2013-06-03 Dehao Chen <de...@google.com> >> > >> > *gimple-low.c (gimple_check_call_args): Restrict the call_arg check to >> > contain same number of args. >> > >> > Index: gcc/gimple-low.c >> > =================================================================== >> > --- gcc/gimple-low.c (revision 199570) >> > +++ gcc/gimple-low.c (working copy) >> > @@ -243,6 +243,8 @@ gimple_check_call_args (gimple stmt, tree fndecl) >> > && !fold_convertible_p (DECL_ARG_TYPE (p), arg))) >> > return false; >> > } >> > + if (p != NULL) >> > + return false; >> >> Please add a comment here, like >> >> /* Not enough parameters to the function call. */ >> if (p != NULL) >> return false; >> >> note that I believe we can deal with this situation just fine during >> inlining, >> we just leave the parameters uninitialized. >> >> So - why do you think the test is a good idea? The whole function should >> ideally be not necessary and is just there to avoid situations we cannot >> deal with during inlining. > > This check is necessary when profile does not match. E.g. if an > indirect call target profile is targeting to an incorrect callee, this > patch can make sure it's verified before actually transforming code. > This could happen is you use an out-of-date profile to optimize for > new code. > > Dehao > > > >> >> Richard. >> >> > } >> > else if (parms) >> > {