http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48571
--- Comment #1 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-04-12 12:24:46 UTC --- To also fail for 64bit change it to for (i = 1; i < 624; ++i) { __SIZE_TYPE__ ii = (__SIZE_TYPE__)i + ((__SIZE_TYPE__)-4)/4; *(unsigned int *)((void *)c + (__SIZE_TYPE__)i * 4) = 2 * *(unsigned int *)((void *)c + ii * 4); } to prevent fold from pulling the multiplication inside.