On 6/27/19 7:24 PM, Richard Sandiford wrote: > Martin Liška writes: >> diff --git a/gcc/config/i386/i386-expand.c b/gcc/config/i386/i386-expand.c >> index d50b811d863..1bd251ea8e2 100644 >> --- a/gcc/config/i386/i386-expand.c >> +++ b/gcc/config/i386/i386-expand.c >> @@ -19780,8 +19780,7 @@ ix86_expand_sse2_mulvxdi3 (rtx op0, rtx op1, rtx op2) >> emit_insn (gen_vec_widen_umult_even_v4si (t5, >> gen_lowpart (V4SImode, op1), >> gen_lowpart (V4SImode, op2))); >> - op0 = expand_binop (mode, add_optab, t5, t4, op0, 1, OPTAB_DIRECT); >> - >> + expand_binop (mode, add_optab, t5, t4, op0, 1, OPTAB_DIRECT); >> } >> else >> { > > This means that nothing uses the expanded value. It looks like the > call was meant to be force_expand_binop instead, so that the expansion > always goes to op0. You are right. The same function is called in the else branch of the condition. I'm sending updated version of the patch. Patch can bootstrap on x86_64-linux-gnu and survives regression tests. Ready to be installed? Thanks, Martin > > Richard >