This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: optimization/7799: [3.2/3.3 regression] Loop bug with optimization flag -Os in gcc


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!


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]