Commit 82e18598 by John David Anglin

re PR target/83451 (FAIL: gfortran.dg/matmul_10.f90 -O3 -fomit-frame-pointer…

re PR target/83451 (FAIL: gfortran.dg/matmul_10.f90   -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (ICE))

	PR target/83451
	* config/pa/pa.c (pa_emit_move_sequence):  Always emit secondary reload
	insn for floating-point loads and stores.

From-SVN: r258541
parent 0b3ec8f4
2018-03-14 John David Anglin <danglin@gcc.gnu.org>
PR target/83451
* config/pa/pa.c (pa_emit_move_sequence): Always emit secondary reload
insn for floating-point loads and stores.
2018-03-14 Carl Love <cel@us.ibm.com> 2018-03-14 Carl Love <cel@us.ibm.com>
* config/rs6000/rs6000-c.c: Add macro definitions for * config/rs6000/rs6000-c.c: Add macro definitions for
......
...@@ -1750,9 +1750,7 @@ pa_emit_move_sequence (rtx *operands, machine_mode mode, rtx scratch_reg) ...@@ -1750,9 +1750,7 @@ pa_emit_move_sequence (rtx *operands, machine_mode mode, rtx scratch_reg)
} }
else else
emit_move_insn (scratch_reg, XEXP (op1, 0)); emit_move_insn (scratch_reg, XEXP (op1, 0));
emit_insn (gen_rtx_SET (operand0, op1 = replace_equiv_address (op1, scratch_reg);
replace_equiv_address (op1, scratch_reg)));
return 1;
} }
} }
else if ((!INT14_OK_STRICT && symbolic_memory_operand (op1, VOIDmode)) else if ((!INT14_OK_STRICT && symbolic_memory_operand (op1, VOIDmode))
...@@ -1762,10 +1760,10 @@ pa_emit_move_sequence (rtx *operands, machine_mode mode, rtx scratch_reg) ...@@ -1762,10 +1760,10 @@ pa_emit_move_sequence (rtx *operands, machine_mode mode, rtx scratch_reg)
/* Load memory address into SCRATCH_REG. */ /* Load memory address into SCRATCH_REG. */
scratch_reg = force_mode (word_mode, scratch_reg); scratch_reg = force_mode (word_mode, scratch_reg);
emit_move_insn (scratch_reg, XEXP (op1, 0)); emit_move_insn (scratch_reg, XEXP (op1, 0));
emit_insn (gen_rtx_SET (operand0, op1 = replace_equiv_address (op1, scratch_reg);
replace_equiv_address (op1, scratch_reg)));
return 1;
} }
emit_insn (gen_rtx_SET (operand0, op1));
return 1;
} }
else if (scratch_reg else if (scratch_reg
&& FP_REG_P (operand1) && FP_REG_P (operand1)
...@@ -1803,9 +1801,7 @@ pa_emit_move_sequence (rtx *operands, machine_mode mode, rtx scratch_reg) ...@@ -1803,9 +1801,7 @@ pa_emit_move_sequence (rtx *operands, machine_mode mode, rtx scratch_reg)
} }
else else
emit_move_insn (scratch_reg, XEXP (op0, 0)); emit_move_insn (scratch_reg, XEXP (op0, 0));
emit_insn (gen_rtx_SET (replace_equiv_address (op0, scratch_reg), op0 = replace_equiv_address (op0, scratch_reg);
operand1));
return 1;
} }
} }
else if ((!INT14_OK_STRICT && symbolic_memory_operand (op0, VOIDmode)) else if ((!INT14_OK_STRICT && symbolic_memory_operand (op0, VOIDmode))
...@@ -1815,10 +1811,10 @@ pa_emit_move_sequence (rtx *operands, machine_mode mode, rtx scratch_reg) ...@@ -1815,10 +1811,10 @@ pa_emit_move_sequence (rtx *operands, machine_mode mode, rtx scratch_reg)
/* Load memory address into SCRATCH_REG. */ /* Load memory address into SCRATCH_REG. */
scratch_reg = force_mode (word_mode, scratch_reg); scratch_reg = force_mode (word_mode, scratch_reg);
emit_move_insn (scratch_reg, XEXP (op0, 0)); emit_move_insn (scratch_reg, XEXP (op0, 0));
emit_insn (gen_rtx_SET (replace_equiv_address (op0, scratch_reg), op0 = replace_equiv_address (op0, scratch_reg);
operand1));
return 1;
} }
emit_insn (gen_rtx_SET (op0, operand1));
return 1;
} }
/* Handle secondary reloads for loads of FP registers from constant /* Handle secondary reloads for loads of FP registers from constant
expressions by forcing the constant into memory. For the most part, expressions by forcing the constant into memory. For the most part,
......
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