Date: Mon, 25 Jun 2007 17:15:08 +0200 From: Ed Schouten <ed@fxq.nl> To: Andrey Chernov <ache@nagual.pp.ru>, Alexander Kabaev <kabaev@gmail.com>, current@freebsd.org, kan@freebsd.org Subject: Re: Silent gcc 4.2.0 loop optimization bug with -O2 Message-ID: <20070625151508.GO27942@hoeg.nl> In-Reply-To: <20070625145627.GA53685@nagual.pp.ru> References: <20070625130913.GA50273@nagual.pp.ru> <20070625133951.GA51324@nagual.pp.ru> <8e5ef5f70706250659v48f64410wb5399985a571087e@mail.gmail.com> <20070625145627.GA53685@nagual.pp.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
Hello Andrey,
* Andrey Chernov <ache@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@fxq.nl>
WWW: http://g-rave.nl/
[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (FreeBSD)
iD8DBQFGf9v852SDGA2eCwURAuLFAJ0Wr+Sy/MXmcMn1lcz4chAvRAUNuwCcDCYf
DjshVg1xAtKEc0+nPzaJj0g=
=/V/g
-----END PGP SIGNATURE-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070625151508.GO27942>
