bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: test-intprops.c: many new warnings


From: Paul Eggert
Subject: Re: test-intprops.c: many new warnings
Date: Tue, 24 May 2011 16:50:41 -0700
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110428 Fedora/3.1.10-1.fc14 Thunderbird/3.1.10

On 05/24/11 12:36, Jim Meyering wrote:

> "make check" was inundated with new warnings.
> Nearly 500 lines worth.

Thanks, I fixed those by pushing the following two patches:

---
 ChangeLog      |    9 +++++++++
 lib/intprops.h |    8 ++++----
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 270866e..fee8b5a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2011-05-24  Paul Eggert  <address@hidden>
+
+       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 
<http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00528.html>.
+
 2011-05-24  Eric Blake  <address@hidden>
 
        docs: document recently fixed glibc printf bug
diff --git a/lib/intprops.h b/lib/intprops.h
index 293204a..d722648 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
    <http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00406.html>.  */
-#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 */
-- 
1.7.4.4



---
 ChangeLog             |    6 ++++++
 tests/test-intprops.c |    6 ++++++
 2 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index fee8b5a..390d4e8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2011-05-24  Paul Eggert  <address@hidden>
 
+       test-intprops: disable -Wtype-limits diagnostics
+       * tests/test-intprops.c: Use a pragma to ignore -Wtype-limits
+       diagnostics.  Otherwise, the integer overflow macros generate many
+       diagnostics.  Reported by Jim Meyering in
+       <http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00528.html>.
+
        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)",
diff --git a/tests/test-intprops.c b/tests/test-intprops.c
index 8fc582b..1a34d77 100644
--- a/tests/test-intprops.c
+++ b/tests/test-intprops.c
@@ -16,6 +16,12 @@
 
 /* Written by Paul Eggert.  */
 
+/* Tell gcc not to warn about the many (X < 0) expressions that
+   the overflow macros expand to.  */
+#if (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) || 4 < __GNUC__
+# pragma GCC diagnostic ignored "-Wtype-limits"
+#endif
+
 #include <config.h>
 
 #include "intprops.h"
-- 
1.7.4.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]