I noticed a new warning, when compiling with
gcc version 4.3.0 20071004 (experimental) (GCC)
xnanosleep.c:79: warning: assuming signed overflow does not occur
when assuming that (X + c) < X is always false
Here's what I've just pushed:
2007-10-07 Jim Meyering <[EMAIL PROTECTED]>
Make xnanosleep's integer overflow test more robust.
* lib/xnanosleep.c (xnanosleep): Declare a temporary to be "volatile",
so that gcc-4.3.0 doesn't optimize away this test for overflow.
...
diff --git a/lib/xnanosleep.c b/lib/xnanosleep.c
index 6a61ddb..22bd53a 100644
--- a/lib/xnanosleep.c
+++ b/lib/xnanosleep.c
@@ -72,7 +72,9 @@ xnanosleep (double seconds)
/* Normalize the interval length. nanosleep requires this. */
if (BILLION <= ts_sleep.tv_nsec)
{
- time_t t = ts_sleep.tv_sec + 1;
+ /* Declare "volatile" so that gcc-4.3.0 doesn't optimize away
+ the overflow test. */
+ volatile time_t t = ts_sleep.tv_sec + 1;
/* Detect integer overflow. */
overflow |= (t < ts_sleep.tv_sec);
--
1.5.3.4.206.g58ba4