Builtin expansion of strncmp currently only happens when at least one of the string arguments is a constant string. Two pieces are needed to enable this:
1) Fix i386.md cmpstrnsi pattern. It uses repzcmpsb which does not actually test for the zero byte ending the string. So this is only a valid pattern when the length of one of the strings is known. So this adds a test for one of the string args being a string constant, in which case expand_builtin_strncmp will have made sure the length arg is no larger than this known length. Also I've changed the pattern to reflect the fact that the generated code can clobber operand 3 if it happens to be in cx. 2) If c_strlen () was unable to determine the length of either string, expand_builtin_strncmp will now use only the length argument and will proceed anyway. Also I've removed a couple pieces that Richard indicated are not needed any more. Bootstrap & regtest passed on x86_64 with svn 242454, ok for trunk? -- Aaron Sawdey, Ph.D. acsaw...@linux.vnet.ibm.com 050-2/C113 (507) 253-7520 home: 507/263-0782 IBM Linux Technology Center - PPC Toolchain