https://sourceware.org/bugzilla/show_bug.cgi?id=29794
--- Comment #2 from Andrew Pinski ---
There is another thing which could be done is do strchr up front to find the
other : and then match the length and not do the strncasecmp in that case.
That is:
static struct reloc_table_entry *
find_reloc_table_entry (char **str)
{
unsigned int i;
const char *relocnameinstrend = strchr(*str, ':');
if (!relocnameinstrend)
return NULL;
int reloclengthinstr = *str - relocnameinstrend;
for (i = 0; i < ARRAY_SIZE (reloc_table); i++)
{
int length = reloc_table[i].name_length;
if (length == -1)
length = strlen (reloc_table[i].name);
if (reloclengthinstr != length)
continue;
if (strncasecmp (reloc_table[i].name, *str, length) == 0
&& (*str)[length] == ':')
{
*str += (length + 1);
return &reloc_table[i];
}
}
return NULL;
}
- CUT
These two should give a reasonable speed up I think. Also reording the list to
the most used first will also speed it up (I think that is the reason why lo12
is first already).
--
You are receiving this mail because:
You are on the CC list for the bug.