Re: c/7661: gcc-3.0 optimization bug on debian GNULinux on x86 with very simple program
> I think this program should not terminate at all because i will
> always be one greater than oldi.
> I think gcc3.0 has a problem with no optimization then but since
> there is later version that works gcc 3.1.1, upgrade.
With no optimization the program runs correctly by the rules of integers
representation in memory. See the explanation below.
>
> trace
> i oldi
> 0 0
> 1 0 check here
> 1 1
> 2 1 check
> 2 2
> .
>
> On Tuesday, August 20, 2002, at 01:11 , Thomas Deselaers wrote:
>
> > main() {
> > int i=0;
> > int oldi=0;;
> > while(++i>oldi) oldi=i;
> > return oldi;
> > }
This is more correct trace:
> trace
> i oldi
> 0 0
> 1 0 check here
> 1 1
> 2 1 check
> 2 2
...
2^31-1 2^31-1
-2^31 2^31-1 check - that's it! Integer overflow. Exit from 'while'
cycle.
Of course, the programmer should not write such a code at all, but compiler
should correctly
compile any code.
Reply to: