optimization/7799: [3.2/3.3 regression] Loop bug with optimization flag -Os in gcc
Christian Ehrhardt
ehrhardt@mathematik.uni-ulm.de
Fri Dec 20 05:46:00 GMT 2002
On Thu, Dec 19, 2002 at 05:33:49PM +0100, Segher Boessenkool wrote:
> > This transformation is IMHO illegal because there is no way to make the
> > comparison in general equivialent to that in the original for loop.
> > If p is initially 0x7ffffffc the comparison must be treated as unsigned,
> > however, if p is initially 0xfffffffc the comparison must be treated as
> > signed.
>
> >From C99 final draft (I wish I had the final version of the standard):
> > [ arrays can't wrap around address 0 ]
Thanks. Others pointed this out as well.
> The comparison should always be unsigned; I don't remember the x86 ISA well
> enough to know if jle is unsigned, but I believe so.
That's the point: jle is signed. jbe is unsigned. The signedness of the
comparison is derived from the type of i which is wrong after elimination
of the loop variable.
regards Christian
--
THAT'S ALL FOLKS!
More information about the Gcc
mailing list