From: Paul Eggert Date: Tue, 30 Aug 2016 19:29:21 +0000 (-0700) Subject: intprops: tune INT_NEGATE_OVERFLOW for GCC 5 and 6 X-Git-Tag: v1.0~6666 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=39fca95053926d63f2ffed3dd64dc41a7d35b767;p=gnulib.git intprops: tune INT_NEGATE_OVERFLOW for GCC 5 and 6 * lib/intprops.h (INT_NEGATE_OVERFLOW): Tune for platforms like GCC 5 and 6 that have __builtin_sub_overflow but not __builtin_sub_overflow_p. With the recent changes, these platforms are a tiny bit faster with the INT_NEGATE_RANGE_OVERFLOW implementation than with INT_SUBTRACT_OVERFLOW implementation, since the former needs just one runtime comparison whereas the latter needs two. --- diff --git a/ChangeLog b/ChangeLog index 7d0cdbd8fd..5c9f404681 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2016-08-30 Paul Eggert + intprops: tune INT_NEGATE_OVERFLOW for GCC 5 and 6 + * lib/intprops.h (INT_NEGATE_OVERFLOW): Tune for platforms like + GCC 5 and 6 that have __builtin_sub_overflow but not + __builtin_sub_overflow_p. With the recent changes, these + platforms are a tiny bit faster with the INT_NEGATE_RANGE_OVERFLOW + implementation than with INT_SUBTRACT_OVERFLOW implementation, + since the former needs just one runtime comparison whereas the + latter needs two. + strverscmp: sync with glibc Although this doesn't exactly synchronize with glibc byte-for-byte, it makes the code behave the same as glibc. diff --git a/lib/intprops.h b/lib/intprops.h index 744e64bf1b..4324e18c93 100644 --- a/lib/intprops.h +++ b/lib/intprops.h @@ -330,7 +330,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); _GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW) #define INT_SUBTRACT_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW) -#if _GL_HAS_BUILTIN_OVERFLOW || _GL_HAS_BUILTIN_OVERFLOW_P +#if _GL_HAS_BUILTIN_OVERFLOW_P # define INT_NEGATE_OVERFLOW(a) INT_SUBTRACT_OVERFLOW (0, a) #else # define INT_NEGATE_OVERFLOW(a) \