On Thu, Aug 20, 2015 at 5:17 AM, Yangfei (Felix) <felix.y...@huawei.com> wrote: > Hi, > > As DECL_FUNCTION_CODE is overloaded for builtin functions in different > classes, so need to check builtin class before using fcode. > Patch posted below. Bootstrapped on x86_64-suse-linux, OK for trunk? > Thanks.
Ugh. The code in the callers already looks like it could have some TLC, like instead of fndecl = gimple_call_fndecl (stmt); if (!fndecl) return false; fcode = DECL_FUNCTION_CODE (fndecl); if (!interesting_stringop_to_profile_p (fndecl, stmt, &size_arg)) return false; simply do if (!gimple_call_builtin_p (stmt, BUILT_IN_NORMAL)) return false; if (!interesting_stringop_to_profile_p (gimple_call_fndecl (stmt), ....)) similar for the other caller. interesting_stringop_to_profile_p can also get function-code directly from stmt, removing the redundant first argument or even do the gimple_call_builtin_p call itself. Mind reworking the patch accordingly? Thanks, Richard. > Index: gcc/value-prof.c > =================================================================== > --- gcc/value-prof.c (revision 141081) > +++ gcc/value-prof.c (working copy) > @@ -1547,8 +1547,12 @@ gimple_ic_transform (gimple_stmt_iterator *gsi) > static bool > interesting_stringop_to_profile_p (tree fndecl, gimple call, int *size_arg) > { > - enum built_in_function fcode = DECL_FUNCTION_CODE (fndecl); > + enum built_in_function fcode; > > + if (DECL_BUILT_IN_CLASS (fndecl) != BUILT_IN_NORMAL) > + return false; > + > + fcode = DECL_FUNCTION_CODE (fndecl); > if (fcode != BUILT_IN_MEMCPY && fcode != BUILT_IN_MEMPCPY > && fcode != BUILT_IN_MEMSET && fcode != BUILT_IN_BZERO) > return false; > Index: gcc/ChangeLog > =================================================================== > --- gcc/ChangeLog (revision 141081) > +++ gcc/ChangeLog (working copy) > @@ -1,3 +1,9 @@ > +2015-08-20 Felix Yang <felix.y...@huawei.com> > + Jiji Jiang <jiangj...@huawei.com> > + > + * value-prof.c (interesting_stringop_to_profile_p): Only accept string > + operations which belong to the BUILT_IN_NORMAL builtin class. > + > 2015-08-18 Segher Boessenkool <seg...@kernel.crashing.org> > > Backport from mainline: