mktime: merge another wrapv change from gnulib
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 16 Mar 2012 10:04:42 +0000 (03:04 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Wed, 23 May 2012 21:36:24 +0000 (14:36 -0700)
* time/mktime.c (TYPE_MAXIMUM): Rework slightly to avoid diagnostics
from some compilers.

ChangeLog
time/mktime.c

index a970b58..982d79b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2012-05-23  Paul Eggert  <eggert@cs.ucla.edu>
 
+       mktime: merge another wrapv change from gnulib
+       * time/mktime.c (TYPE_MAXIMUM): Rework slightly to avoid diagnostics
+       from some compilers.
+
        mktime: remove incorrect attempt at unusual arithmetics
        * time/mktime.c (TYPE_ONES_COMPLEMENT, TYPE_SIGNED_MAGNITUDE): Remove.
        The code didn't really work on such machines anyway.
index 652a0f2..61b2308 100644 (file)
@@ -121,7 +121,7 @@ verify (long_int_is_wide_enough, INT_MAX == INT_MAX * (long_int) 2 / 2);
 #define TYPE_MAXIMUM(t) \
   ((t) (! TYPE_SIGNED (t) \
        ? (t) -1 \
-       : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
+       : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
 
 #ifndef TIME_T_MIN
 # define TIME_T_MIN TYPE_MINIMUM (time_t)