// David
For value profiling transformation to kick in, gcc requires value histogram to
have a value with dominating count. However, another heuristic that can be used
is to check if the total number of values is small, for instance 2.
The following progrma shows the problem:
//
#include <string.h>
void mycpy (char* s1, char *s2, int n) __attribute__((noinline));
void mycpy (char* s1, char *s2, int n)
{
memcpy(s1,s2,n);
}
int main()
{
char *s1 = malloc(100000);
char *s2 = malloc(100000);
int i;
for ( i = 0 ; i < 100000; i ++)
{
mycpy(s1,s2, i%2 ? 128:64);
}
}
--
Summary: value profiling tuning
Product: gcc
Version: 4.4.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: xinliangli at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35591