Index: testsuite/gcc.target/i386/pr66813.c =================================================================== --- testsuite/gcc.target/i386/pr66813.c (revision 0) +++ testsuite/gcc.target/i386/pr66813.c (revision 0) @@ -0,0 +1,4 @@ +/* { dg-do compile { target { ia32 } } } */ +/* { dg-options "-march=pentium" } */ + +#include "asm-flag-5.c" Index: config/i386/i386.c =================================================================== --- config/i386/i386.c (revision 225648) +++ config/i386/i386.c (working copy) @@ -45842,7 +45842,17 @@ ix86_md_asm_adjust (vec &outputs, vec &/ { rtx destqi = gen_reg_rtx (QImode); emit_insn (gen_rtx_SET (destqi, x)); - x = gen_rtx_ZERO_EXTEND (dest_mode, destqi); + + if (TARGET_ZERO_EXTEND_WITH_AND + && optimize_function_for_speed_p (cfun)) + { + x = force_reg (dest_mode, const0_rtx); + + emit_insn (gen_movstrictqi + (gen_lowpart (QImode, x), destqi)); + } + else + x = gen_rtx_ZERO_EXTEND (dest_mode, destqi); } emit_insn (gen_rtx_SET (dest, x)); }