http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51070
--- Comment #2 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-11-10 12:00:41 UTC --- For <bb 5>: # g_224.0_23 = PHI <g_224.1_10(7), g_224.0_22(4)> # MEM = PHI <MEM, MEM> D.2957_3 = g_92[g_224.0_23]; g_92[g_224.0_23] = 0; g_352[g_224.0_23] = 1; g_224.1_10 = g_224.0_23 + 1; if (g_224.1_10 != 0) goto <bb 7>; else goto <bb 6>; <bb 6>: # g_95_I_lsm.15_29 = PHI <D.2957_3(5)> g_95[0] = g_95_I_lsm.15_29; g_224 = 0; goto <bb 3>; <bb 7>: goto <bb 5>; we generate partitions { 0 1 2 3 5 6 } and { 0 4 5 6 } note that the partition with the zero store also includes the load from g_92[g_224.0_23] which has a use outside of the loop. We cannot generate a memset replacement for this with the current code. I have a patch.