Fix "integer overflow" warnings with OSF/1 5.1 cc.
authorBruno Haible <bruno@clisp.org>
Mon, 29 Oct 2007 02:59:04 +0000 (03:59 +0100)
committerBruno Haible <bruno@clisp.org>
Mon, 29 Oct 2007 02:59:04 +0000 (03:59 +0100)
ChangeLog
lib/stdint.in.h

index ea419d8af80f9e2352b048840b156538f357ad9e..911a8cf720a044d08c5ef31f6262c53574164dc7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-10-28  Bruno Haible  <bruno@clisp.org>
+
+       * lib/stdint.in.h (_STDINT_MAX): Subtract 1 from an unused signed
+       integer shift in the signed case. Fixes warnings with OSF/1 5.1 cc.
+
 2007-10-28  Bruno Haible  <bruno@clisp.org>
 
        Fix link errors with Sun C 5.0 on Solaris 10.
index ef0c335975678a579640f556bc3dcbe8636bfd63..3dcd9ba0828801e6cb6d89ad12e7b400d778c787 100644 (file)
 #define _STDINT_MAX(signed, bits, zero) \
   ((signed) \
    ? ~ _STDINT_MIN (signed, bits, zero) \
-   : ((((zero) + 1) << ((bits) ? (bits) - 1 : 0)) - 1) * 2 + 1)
+   : /* The expression for the unsigned case.  The subtraction of (signed) \
+       is a nop in the unsigned case and avoids "signed integer overflow" \
+       warnings in the signed case.  */ \
+     ((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1)
 
 /* 7.18.1.1. Exact-width integer types */