https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90187
--- Comment #7 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to Jakub Jelinek from comment #6) > Or would you prefer: > --- gcc/config/i386/i386.c.jj 2019-04-16 10:40:15.077091789 +0200 > +++ gcc/config/i386/i386.c 2019-04-23 11:55:59.397227347 +0200 > @@ -23712,7 +23712,10 @@ ix86_expand_sse_fp_minmax (rtx dest, enu > else > { > code = is_min ? SMIN : SMAX; > - tmp = gen_rtx_fmt_ee (code, mode, if_true, if_false); > + rtx operands[3] = { dest, if_true, if_false }; > + ix86_fixup_binary_operands_no_copy (code, mode, operands); > + tmp = gen_rtx_fmt_ee (code, mode, operands[1], operands[2]); > + dest = operands[0]; > } > > emit_insn (gen_rtx_SET (dest, tmp)); > instead? I think a switch on mode to handle all the possible modes in there > and assign the different gen_{smin,smax}* in those cases would be too large. No, the proposed patch that forces if_true operand to a register should be enough. It doesn't make much difference calling ix86_fixup_binary_operands_* without memory output operand.