From efa15594e17fc20827dba66414fb391e99905394 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Wed, 22 Jul 2020 18:35:20 +0200 Subject: 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. --- lib/memcasecmp.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'lib/memcasecmp.c') diff --git a/lib/memcasecmp.c b/lib/memcasecmp.c index a44379373c..6720b8cdb8 100644 --- a/lib/memcasecmp.c +++ b/lib/memcasecmp.c @@ -40,8 +40,7 @@ memcasecmp (const void *vs1, const void *vs2, size_t n) unsigned char u2 = s2[i]; int U1 = toupper (u1); int U2 = toupper (u2); - int diff = (UCHAR_MAX <= INT_MAX ? U1 - U2 - : U1 < U2 ? -1 : U2 < U1); + int diff = (UCHAR_MAX <= INT_MAX ? U1 - U2 : _GL_CMP (U1, U2)); if (diff) return diff; } -- cgit v1.2.1