[BusyBox] Where do I report a compiler bug?

Rob Landley rob at landley.net
Mon Oct 13 13:05:35 UTC 2003


On Monday 13 October 2003 04:11, Wolfgang Denk wrote:
> In message <200310130319.57281.rob at landley.net> you wrote:
> > Yup, it's a compiler bug.  Here's the test case.  gcc 3.2.2 out of Red
> > Hat 9 miscompiles this with -Os, but compiles it correctly without -Os.
>
> ...
>
> > 		/* Bug: this fails to move array */
> >
> > 		while(i) {
> > 			mtfSymbol[i] = mtfSymbol[--i];
> > 		}
>
> Are you sure this is a compiler bug? Or is it undefined behaviour?

Yes, I'm sure it's a compiler bug.

If it was undefined behavior, dest[i]=source[i++] wouldn't work.  If the 
second occurrence of i could be evaluated before the first, then the 
postincrement on the second would change the value of the first.  (Note, just 
as preincrement says we must change the value before using it, postincrement 
says the value is changed for everyone after us who uses it.)  And that's an 
extremely common idiom.  It's evaluated from left to right.  Lvalue or not 
doesn't change that.  (I'm a bit sleep deprived just now, but I remember 
reading this in the spec ten years ago when I was studying what it would take 
to implement my own C compiler...)

I'd also like to point out that the problem only occurs when an optimization 
flag is given, and that it works correctly when you don't say -Os.

> Best regards,
>
> Wolfgang Denk

Rob



More information about the busybox mailing list