From d66dec28ec8f045774cc765f1c3bcf8a469db1b2 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Wed, 19 Feb 1997 18:14:34 -0700 Subject: [PATCH] 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 --- gcc/config/pa/pa.c | 9 +++++++++ gcc/config/pa/pa.md | 2 ++ 2 files changed, 11 insertions(+) diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index 3ed113b9805..221166fb664 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -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. */ diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index 774e33ef720..6748d537731 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -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" "* { -- 2.30.2