------- Additional Comments From pinskia at gcc dot gnu dot org 2005-09-21 01:57 ------- We now get: # i_7 = PHI <i_3(1), 0(0)>; <L0>:; i_3 = i_7 + 1; bar (i_3); D.1284_13 = *array_8; D.1285_14 = (long unsigned int) D.1284_13; D.1286_15 = i_7 & 31; D.1287_16 = 1 << D.1286_15; D.1288_17 = D.1285_14 | D.1287_16; D.1289_18 = (int) D.1288_17; *array_8 = D.1289_18; if (i_3 != 11) goto <L0>; else goto <L2>;
This is semi fixed for bounds less than 32. trying with 37, we get the same old crap. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19790