http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48343
Richard Guenther <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Known to work| |4.5.2 Keywords| |ice-on-valid-code Last reconfirmed| |2011.03.30 08:54:12 Component|target |debug Ever Confirmed|0 |1 Summary|ICE compiling i586 |[4.6/4.7 Regression] ICE |linux-2.6.38/drivers/stagin |compiling i586 |g/wlan-ng/p80211wep.c: in |linux-2.6.38/drivers/stagin |form_sum, at reload.c:5338 |g/wlan-ng/p80211wep.c: in | |form_sum, at reload.c:5338 Target Milestone|--- |4.6.1 --- Comment #1 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-03-30 08:54:12 UTC --- Confirmed. Reduced testcase: #define swap(a, b) \ do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0) struct dev { int keylens[4]; }; void test(struct dev *dev, int keynum, unsigned char *iv) { unsigned int i, j, keylen; unsigned char s[256], key[64]; keylen = dev->keylens[keynum]; key[0] = iv[0]; for (i = 0; i < 256; i++) { j = (j + s[i] + key[i % keylen]) & 0xff; swap(i, j); } } also fails on x86_64-*-* with -O3 -g -m32.