diff options
author | Bruno Haible <bruno@clisp.org> | 2020-07-22 18:35:20 +0200 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2020-07-24 00:13:55 +0200 |
commit | efa15594e17fc20827dba66414fb391e99905394 (patch) | |
tree | 9710f6d5d8c6c36c98d44eb3367215f116dbf638 /lib/mbmemcasecmp.c | |
parent | 27027b83f91266c2d848841a1caf6fbda69ce07e (diff) | |
download | gnulib-efa15594e17fc20827dba66414fb391e99905394.tar.gz |
Optimize three-valued comparison between integers.
(a > b ? 1 : a < b ? -1 : 0) is the same as (a > b) - (a < b).
* m4/gnulib-common.m4 (gl_COMMON): Define _GL_CMP.
* lib/c-strcasecmp.c (c_strcasecmp): Use _GL_CMP.
* lib/c-strncasecmp.c (c_strncasecmp): Likewise.
* lib/dfa.c (compare): Likewise.
* lib/fts.c (fts_compare_ino): Likewise.
* lib/mbmemcasecmp.c (mbmemcasecmp): Likewise.
* lib/mbscasecmp.c (mbscasecmp): Likewise.
* lib/mbsncasecmp.c (mbsncasecmp): Likewise.
* lib/memcasecmp.c (memcasecmp): Likewise.
* lib/memcmp2.c (memcmp2): Likewise.
* lib/savedir.c (direntry_cmp_inode): Likewise.
* lib/strcasecmp.c (strcasecmp): Likewise.
* lib/strncasecmp.c (strncasecmp): Likewise.
* lib/unistr/u-cmp2.h (FUNC): Likewise.
Diffstat (limited to 'lib/mbmemcasecmp.c')
-rw-r--r-- | lib/mbmemcasecmp.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/mbmemcasecmp.c b/lib/mbmemcasecmp.c index 57039d2950..d0eea69d4b 100644 --- a/lib/mbmemcasecmp.c +++ b/lib/mbmemcasecmp.c @@ -33,7 +33,7 @@ int mbmemcasecmp (const char *s1, size_t n1, const char *s2, size_t n2) { if (s1 == s2) - return (n1 < n2 ? -1 : n1 > n2 ? 1 : 0); + return _GL_CMP (n1, n2); if (MB_CUR_MAX > 1) { @@ -80,7 +80,7 @@ mbmemcasecmp (const char *s1, size_t n1, const char *s2, size_t n2) /* On machines where 'char' and 'int' are types of the same size, the difference of two 'unsigned char' values - including the sign bit - doesn't fit in an 'int'. */ - return (c1 > c2 ? 1 : c1 < c2 ? -1 : 0); + return _GL_CMP (c1, c2); } ++p1; ++p2; |