http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60868
--- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> --- This works: diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 536f50f..7a68623 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -24392,7 +24392,8 @@ ix86_expand_set_or_movmem (rtx dst, rtx src, rtx count_exp, rtx val_exp, if (jump_around_label == NULL_RTX) jump_around_label = gen_label_rtx (); emit_cmp_and_jump_insns (count_exp, GEN_INT (dynamic_check - 1), - LEU, 0, GET_MODE (count_exp), 1, hot_label); + LEU, 0, counter_mode (count_exp), + 1, hot_label); predict_jump (REG_BR_PROB_BASE * 90 / 100); if (issetmem) set_storage_via_libcall (dst, count_exp, val_exp, false);