http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53433
--- Comment #24 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-07-04 11:16:20 UTC --- The hint in comment #5 together with your analysis points at the initializer in insn-output.c: const struct insn_data_d insn_data[] = { ... /* /space/rguenther/src/svn/trunk/gcc/config/i386/i386.md:16008 */ { "cmpstrnsi", #if HAVE_DESIGNATED_UNION_INITIALIZERS { 0 }, #else { 0, 0, 0 }, #endif (insn_gen_fn) gen_cmpstrnsi, &operand_data[5173], 5, 5, 0, 0, 0 }, and operand_data in static const struct insn_operand_data operand_data[] = { ... { 0, "", VOIDmode, 0, 0, 1, 0 }, { <--- should be this register_operand, "", SImode, 0, 0, 1, 0 }, { general_operand, "", BLKmode, 0, 0, 1, 1 }, so maybe there is an off-by-one error somewhere in constant folding from initializers?