Hi, from IRC: "[15:45:21] <richi> ick - lookup_constraint for multi-letter constraints is quite expensive ... strncmp is not expanded inline for some reason"
Instead of fiddling with strncmp inlining, simply generate better code from the start for two character constraints: switch (str[0]) { case 'Y': switch (str[1]) { case 'i': return CONSTRAINT_Yi; case 'm': return CONSTRAINT_Ym; ... Ciao, Michael. -- * genpreds (write_lookup_constraint): Special case two-character constraints to also expand to a switch. Index: genpreds.c =================================================================== --- genpreds.c (revision 196053) +++ genpreds.c (working copy) @@ -941,6 +941,22 @@ write_lookup_constraint (void) printf (" case '%c':\n", i); if (c->namelen == 1) printf (" return CONSTRAINT_%s;\n", c->c_name); + else if (c->namelen == 2) + { + puts (" switch (str[1])\n" + " {"); + do + { + printf (" case '%c':\n" + " return CONSTRAINT_%s;\n", + c->name[1], c->c_name); + c = c->next_this_letter; + } + while (c); + puts (" default: break;\n" + " }\n" + " break;"); + } else { do