http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50693
--- Comment #17 from David Edelsohn <dje at gcc dot gnu.org> 2011-10-11 14:40:09 UTC --- LLVM appears to be able to recognize memset of any value, not just zero. And apparently performs control flow simplification before attempting to recognize the idiom, so it can expose the loop created by the convoluted GOTOs.