>From ea38053c25508e8cae0c077984caf2bbe3f1b4dd Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 30 Aug 2016 12:29:21 -0700 Subject: [PATCH] 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. --- ChangeLog | 9 +++++++++ lib/intprops.h | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 7d0cdbd..5c9f404 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 744e64b..4324e18 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) \ -- 2.7.4