bug-autoconf
[Top][All Lists]
Advanced

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

mktime function test can't be passed with gcc 4.3.0


From: Dmitry Antipov
Subject: mktime function test can't be passed with gcc 4.3.0
Date: Fri, 14 Mar 2008 16:37:48 +0300
User-agent: Thunderbird 2.0.0.12 (X11/20080226)

Hello all,

mktime() function test can't be passed with gcc 4.3.0. With this version of 
gcc, the
following loop (which exploits an integer overflow) will never exited (with -O2 
and above):

...
for (j = 1; 0 < j; j *= 2)
  if (! bigtime_test (j))
    return 1;
...

Consider the following program:

#include <stdio.h>

int
main ()
{
  int j;

  for (j = 1; j > 0; j *= 2)
    printf ("%d\n", j);
}

With '-O2' it gives:

1
2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
65536
131072
262144
524288
1048576
2097152
4194304
8388608
16777216
33554432
67108864
134217728
268435456
536870912
1073741824
-2147483648
0
0
0
[loop forever with 0]
...

But with '-O2 -fno-tree-vrp', it works as expected:

1
2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
65536
131072
262144
524288
1048576
2097152
4194304
8388608
16777216
33554432
67108864
134217728
268435456
536870912
1073741824

This looks a bit surprisingly, but GCC developers says 
(http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35581)
that this is normal behavior since integer overflow is undefined.

I would like to see a warning from the compiler here, but unfortunately this is 
not the case for now.

Dmitry





reply via email to

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