Re: Silent gcc 4.2.0 loop optimization bug with -O2

From: Ed Schouten <ed_at_fxq.nl>
Date: Mon, 25 Jun 2007 17:15:08 +0200
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/

Received on Mon Jun 25 2007 - 13:15:09 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:13 UTC