From 42f4929d5a0ef969f8657e463c52a2f6af3758e8 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Tue, 28 Oct 1997 14:40:01 -0800 Subject: [PATCH] alpha.md (reload_inqi): Check for MEM before strict_memory_address_p... * alpha.md (reload_inqi): Check for MEM before strict_memory_address_p, since any_memory_operand() allows pseudos during reload. (reload_inhi, reload_outqi, reload_outhi): Likewise. From-SVN: r16219 --- gcc/ChangeLog | 6 ++++++ gcc/config/alpha/alpha.md | 14 ++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 05820601564..f6a96bdac10 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Tue Oct 28 14:36:45 1997 Richard Henderson + + * alpha.md (reload_inqi): Check for MEM before strict_memory_address_p, + since any_memory_operand() allows pseudos during reload. + (reload_inhi, reload_outqi, reload_outhi): Likewise. + Tue Oct 28 11:53:14 1997 Jim Wilson * m68k.md (btst patterns): Add 5200 support. diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md index 221d5d9094f..570ab915ae2 100644 --- a/gcc/config/alpha/alpha.md +++ b/gcc/config/alpha/alpha.md @@ -4291,7 +4291,8 @@ ? REGNO (operands[2]) + 1 : REGNO (operands[2])); /* We must be careful to make sure that the new rtx won't need reloading. */ - if (! strict_memory_address_p (DImode, XEXP (operands[1], 0))) + if (GET_CODE (operands[1]) == MEM && + ! strict_memory_address_p (DImode, XEXP (operands[1], 0))) { tmp = gen_rtx (REG, Pmode, REGNO (operands[0])); emit_insn (gen_move_insn (tmp, XEXP (operands[1], 0))); @@ -4324,7 +4325,8 @@ ? REGNO (operands[2]) + 1 : REGNO (operands[2])); /* We must be careful to make sure that the new rtx won't need reloading. */ - if (!strict_memory_address_p (DImode, XEXP (operands[1], 0))) + if (GET_CODE (operands[1]) == MEM && + ! strict_memory_address_p (DImode, XEXP (operands[1], 0))) { tmp = gen_rtx (REG, Pmode, REGNO (operands[0])); emit_insn (gen_move_insn (tmp, XEXP (operands[1], 0))); @@ -4348,7 +4350,9 @@ " { extern rtx get_unaligned_address (); - if (!strict_memory_address_p (DImode, XEXP (operands[0], 0))) + /* Note that any_memory_operand allows pseudos during reload. */ + if (GET_CODE (operands[0]) == MEM && + ! strict_memory_address_p (DImode, XEXP (operands[0], 0))) { rtx scratch1 = gen_rtx (REG, DImode, REGNO (operands[2])); emit_insn (gen_move_insn (scratch1, XEXP (operands[0], 0))); @@ -4394,7 +4398,9 @@ " { extern rtx get_unaligned_address (); - if (!strict_memory_address_p (DImode, XEXP (operands[0], 0))) + /* Note that any_memory_operand allows pseudos during reload. */ + if (GET_CODE (operands[0]) == MEM && + ! strict_memory_address_p (DImode, XEXP (operands[0], 0))) { rtx scratch1 = gen_rtx (REG, DImode, REGNO (operands[2])); emit_insn (gen_move_insn (scratch1, XEXP (operands[0], 0)));