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
--VbVrQm6YT89AsdIa Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable 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] =3D { 0xdead, 0xbeef, 0x1337, 0x4242 }; |=20 | for (i =3D 1; i <=3D 12; i++) { | if (i <=3D 4) | printf("%d: %x\n", i, numbers[i-1]); | else if (i >=3D 7 && i <=3D 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.=20 You should really file a bug at GCC's to make sure this gets fixed in 4.2.1. Yours, --=20 Ed Schouten <ed@fxq.nl> WWW: http://g-rave.nl/ --VbVrQm6YT89AsdIa Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.7 (FreeBSD) iD8DBQFGf9v852SDGA2eCwURAuLFAJ0Wr+Sy/MXmcMn1lcz4chAvRAUNuwCcDCYf DjshVg1xAtKEc0+nPzaJj0g= =/V/g -----END PGP SIGNATURE----- --VbVrQm6YT89AsdIa--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070625151508.GO27942>