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:
parent
dd56b31fe9
commit
d66dec28ec
|
@ -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. */
|
||||
|
|
|
@ -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"
|
||||
"*
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue