From f6de3184b43eaa60a695b94829e6cc80c1e0bd55 Mon Sep 17 00:00:00 2001 From: bebbo Date: Mon, 13 Jun 2022 17:35:09 +0200 Subject: [PATCH] refs #181: fix emitted code and set d0/d1 properly --- gcc/config/m68k/m68k.md | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md index c3f65e3f1a8fd..86a77448faf49 100644 --- a/gcc/config/m68k/m68k.md +++ b/gcc/config/m68k/m68k.md @@ -8921,25 +8921,23 @@ bas->unchanging = 1; emit_move_insn (a6, bas); - rtx_insn * call = emit_call_insn (gen_acall (gen_rtx_PLUS(SImode, a6, GEN_INT(-)), const0_rtx)); + rtx_insn * call = emit_call_insn (gen_rtx_SET (gen_raw_REG (SFmode, D0_REG), gen_acall (gen_rtx_PLUS(SImode, a6, GEN_INT(-)), const0_rtx))); - if (0 == strcmp("tentox", "") || 0 == strcmp("twotox", "")) + if (0 == strcmp("tentox", "") || 0 == strcmp("twotox", "")) // use d0, d1 add_function_usage_to (call, gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_USE(SFmode, d0), gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_USE(SFmode, d1), - gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, d0), gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, d1), gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (SImode, A0_REG)), gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (SImode, A1_REG)), gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (XFmode, FP0_REG)), - gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (XFmode, FP1_REG)), 0))))))))); - else + gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (XFmode, FP1_REG)), 0)))))))); + else // use d0 add_function_usage_to (call, gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_USE(SFmode, d0), - gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, d0), gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, d1), gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (SImode, A0_REG)), gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (SImode, A1_REG)), gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (XFmode, FP0_REG)), - gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (XFmode, FP1_REG)), 0)))))))); + gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (XFmode, FP1_REG)), 0))))))); emit_move_insn (operands[0], d0); @@ -8985,25 +8983,21 @@ bas->unchanging = 1; emit_move_insn (a6, bas); - rtx_insn * call = emit_call_insn (gen_acall (gen_rtx_PLUS(SImode, a6, GEN_INT(-)), const0_rtx)); + rtx_insn * call = emit_call_insn (gen_rtx_SET (gen_raw_REG (DFmode, D0_REG), gen_acall (gen_rtx_PLUS(SImode, a6, GEN_INT(-)), const0_rtx))); - if (0 == strcmp("tentox", "") || 0 == strcmp("twotox", "")) + if (0 == strcmp("tentox", "") || 0 == strcmp("twotox", "")) // use d0, d2 add_function_usage_to (call, gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_USE(DFmode, d0), - gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_USE(DFmode, d1), - gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, d0), - gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (DFmode, D1_REG)), + gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_USE(DFmode, gen_raw_REG (DFmode, D2_REG)), gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (SImode, A0_REG)), gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (SImode, A1_REG)), gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (XFmode, FP0_REG)), - gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (XFmode, FP1_REG)), 0))))))))); + gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (XFmode, FP1_REG)), 0))))))); else add_function_usage_to (call, gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_USE(DFmode, d0), - gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, d0), - gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (DFmode, D1_REG)), gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (SImode, A0_REG)), gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (SImode, A1_REG)), gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (XFmode, FP0_REG)), - gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (XFmode, FP1_REG)), 0)))))))); + gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (XFmode, FP1_REG)), 0)))))); emit_move_insn (operands[0], d0);