re PR target/91498 (STV change in r274481 causes 300.twolf regression on Haswell)

2019-08-21  Richard Biener  <rguenther@suse.de>

	PR target/91498
	PR target/91503
	* config/i386/i386-features.c
	(general_scalar_chain::make_vector_copies): Copy stack temporary
	rtx when using it multiple times.
	(general_scalar_chain::convert_reg): Likewise.

From-SVN: r274792
This commit is contained in:
Richard Biener 2019-08-21 08:44:59 +00:00 committed by Richard Biener
parent 5eb349352b
commit 8ef64ab954
2 changed files with 11 additions and 2 deletions

View File

@ -1,3 +1,12 @@
2019-08-21 Richard Biener <rguenther@suse.de>
PR target/91498
PR target/91503
* config/i386/i386-features.c
(general_scalar_chain::make_vector_copies): Copy stack temporary
rtx when using it multiple times.
(general_scalar_chain::convert_reg): Likewise.
2019-08-20 Bernd Edlinger <bernd.edlinger@hotmail.de>
* function.c (assign_parm_find_stack_rtl): Use known_eq instead of ==.

View File

@ -706,7 +706,7 @@ general_scalar_chain::make_vector_copies (unsigned regno)
gen_rtx_SUBREG (SImode, reg, 4));
}
else
emit_move_insn (tmp, reg);
emit_move_insn (copy_rtx (tmp), reg);
emit_insn (gen_rtx_SET (gen_rtx_SUBREG (vmode, vreg, 0),
gen_gpr_to_xmm_move_src (vmode, tmp)));
}
@ -810,7 +810,7 @@ general_scalar_chain::convert_reg (unsigned regno)
adjust_address (tmp, SImode, 4));
}
else
emit_move_insn (scopy, tmp);
emit_move_insn (scopy, copy_rtx (tmp));
}
else if (!TARGET_64BIT && smode == DImode)
{