pa.c (emit_move_sequence): Don't copy 0.0 (double precision) directly to memory...

* pa/pa.c (emit_move_sequence): Don't copy 0.0 (double precision)
        directly to memory, go through a reg if reload hasn't started.
        * pa/pa.md (main movdf pattern): Don't allow 0.0 (double precision)
        to be copied directly to memory.

From-SVN: r13669
This commit is contained in:
Jeff Law 1997-02-19 18:14:34 -07:00
parent dd56b31fe9
commit d66dec28ec
2 changed files with 11 additions and 0 deletions

View File

@ -1192,6 +1192,15 @@ emit_move_sequence (operands, mode, scratch_reg)
}
else if (GET_CODE (operand0) == MEM)
{
if (mode == DFmode && operand1 == CONST0_RTX (mode)
&& !(reload_in_progress || reload_completed))
{
rtx temp = gen_reg_rtx (DFmode);
emit_insn (gen_rtx (SET, VOIDmode, temp, operand1));
emit_insn (gen_rtx (SET, VOIDmode, operand0, temp));
return 1;
}
if (register_operand (operand1, mode) || operand1 == CONST0_RTX (mode))
{
/* Run this case quickly. */

View File

@ -2237,6 +2237,8 @@
"fG,*rG,f,*r,*r,RQ,o,Q"))]
"(register_operand (operands[0], DFmode)
|| reg_or_0_operand (operands[1], DFmode))
&& ! (GET_CODE (operands[1]) == CONST_DOUBLE
&& GET_CODE (operands[0]) == MEM)
&& ! TARGET_SOFT_FLOAT"
"*
{