Silent gcc 4.2.0 loop optimization bug with -O2
Ed Schouten
ed at fxq.nl
Mon Jun 25 15:15:09 UTC 2007
Hello Andrey,
* Andrey Chernov <ache at nagual.pp.ru> wrote:
> Well... Is this small enough?
I did some more stripping and it turns out this is the problem
| int
| main(int argc, char *argv[])
| {
| int i;
| int numbers[4] = { 0xdead, 0xbeef, 0x1337, 0x4242 };
|
| for (i = 1; i <= 12; i++) {
| if (i <= 4)
| printf("%d: %x\n", i, numbers[i-1]);
| else if (i >= 7 && i <= 9)
| printf("MUST BE HERE!!! %d\n", i);
| }
| }
When you increase the size of the array to 6 or higher, it does what you
want. It clearly looks like a compiler bug; the size of the array
shouldn't have an effect on the amount of iterations.
You should really file a bug at GCC's to make sure this gets fixed in
4.2.1.
Yours,
--
Ed Schouten <ed at fxq.nl>
WWW: http://g-rave.nl/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-current/attachments/20070625/a4e706c9/attachment.pgp
More information about the freebsd-current
mailing list