From 8aad2a7bdd93df610506c08accd7cf1b67153f51 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 24 May 2011 16:45:14 -0700 Subject: [PATCH] intprops: shorten, to pacify gcc -Woverlength-strings * lib/intprops.h (_GL_INT_CONVERT, _GL_INT_NEGATE_CONVERT): (_GL_BINARY_OP_OVERFLOW): Say "0 * (x)" rather than "(x) - (x)", so that, for example, verify (INT_MULTIPLY_OVERFLOW (...)) is less likely to run afoul of C compiler limits for string constant lengths. See . --- ChangeLog | 9 +++++++++ lib/intprops.h | 8 ++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 270866e7ac..fee8b5ad31 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2011-05-24 Paul Eggert + + intprops: shorten, to pacify gcc -Woverlength-strings + * lib/intprops.h (_GL_INT_CONVERT, _GL_INT_NEGATE_CONVERT): + (_GL_BINARY_OP_OVERFLOW): Say "0 * (x)" rather than "(x) - (x)", + so that, for example, verify (INT_MULTIPLY_OVERFLOW (...)) is less + likely to run afoul of C compiler limits for string constant lengths. + See . + 2011-05-24 Eric Blake docs: document recently fixed glibc printf bug diff --git a/lib/intprops.h b/lib/intprops.h index 293204ab43..d722648555 100644 --- a/lib/intprops.h +++ b/lib/intprops.h @@ -25,11 +25,11 @@ /* Return a integer value, converted to the same type as the integer expression E after integer type promotion. V is the unconverted value. E should not have side effects. */ -#define _GL_INT_CONVERT(e, v) ((e) - (e) + (v)) +#define _GL_INT_CONVERT(e, v) (0 * (e) + (v)) /* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see . */ -#define _GL_INT_NEGATE_CONVERT(e, v) ((e) - (e) - (v)) +#define _GL_INT_NEGATE_CONVERT(e, v) (0 * (e) - (v)) /* The extra casts in the following macros work around compiler bugs, e.g., in Cray C 5.0.3.0. */ @@ -314,7 +314,7 @@ Arguments should be free of side effects. */ #define _GL_BINARY_OP_OVERFLOW(a, b, op_result_overflow) \ op_result_overflow (a, b, \ - _GL_INT_MINIMUM ((b) - (b) + (a)), \ - _GL_INT_MAXIMUM ((b) - (b) + (a))) + _GL_INT_MINIMUM (0 * (b) + (a)), \ + _GL_INT_MAXIMUM (0 * (b) + (a))) #endif /* _GL_INTPROPS_H */ -- 2.30.2