Commit b049c269 by Richard Biener Committed by Richard Biener

re PR target/91814 (ICE in elimination_costs_in_insn, at reload1.c:3549 since r274926)

2019-09-20  Richard Biener  <rguenther@suse.de>
	Uros Bizjak  <ubizjak@gmail.com>

	PR target/91814
	* config/i386/i386-features.c (gen_gpr_to_xmm_move_src): Revert
	previous change.
	(general_scalar_chain::convert_op): Force not suitable memory
	operands to a register.

Co-Authored-By: Uros Bizjak <ubizjak@gmail.com>

From-SVN: r275998
parent d63eadac
2019-09-20 Richard Biener <rguenther@suse.de>
Uros Bizjak <ubizjak@gmail.com>
PR target/91814
* config/i386/i386-features.c (gen_gpr_to_xmm_move_src): Revert
previous change.
(general_scalar_chain::convert_op): Force not suitable memory
operands to a register.
2019-09-20 Richard Biener <rguenther@suse.de>
PR tree-optimization/91821
* tree-vect-loop.c (check_reduction_path): Check we can compute
......
......@@ -668,8 +668,6 @@ scalar_chain::emit_conversion_insns (rtx insns, rtx_insn *after)
static rtx
gen_gpr_to_xmm_move_src (enum machine_mode vmode, rtx gpr)
{
if (!nonimmediate_operand (gpr, GET_MODE_INNER (vmode)))
gpr = force_reg (GET_MODE_INNER (vmode), gpr);
switch (GET_MODE_NUNITS (vmode))
{
case 1:
......@@ -835,6 +833,15 @@ general_scalar_chain::convert_op (rtx *op, rtx_insn *insn)
{
rtx tmp = gen_reg_rtx (GET_MODE (*op));
/* Handle movabs. */
if (!memory_operand (*op, GET_MODE (*op)))
{
rtx tmp2 = gen_reg_rtx (GET_MODE (*op));
emit_insn_before (gen_rtx_SET (tmp2, *op), insn);
*op = tmp2;
}
emit_insn_before (gen_rtx_SET (gen_rtx_SUBREG (vmode, tmp, 0),
gen_gpr_to_xmm_move_src (vmode, *op)),
insn);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment