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.
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 <[email protected]>
+ Jiji Jiang <[email protected]>
+
+ * 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 <[email protected]>
Backport from mainline: