summaryrefslogtreecommitdiff
path: root/gcc/reload.c
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1993-05-06 22:18:06 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1993-05-06 22:18:06 +0000
commit1fbf42c7f5030fcc6f6b6b4af2b193bff8881a18 (patch)
treeda91edf84438c26184894ae82419f23027855cc7 /gcc/reload.c
parent25baaab437c400c277644fb25cbaf4350b5c7e8c (diff)
downloadgcc-1fbf42c7f5030fcc6f6b6b4af2b193bff8881a18.tar.gz
(find_equiv_reg): Don't look inside a CONST_DOUBLE; use
operand_subword instead. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@4373 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/reload.c')
-rw-r--r--gcc/reload.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/gcc/reload.c b/gcc/reload.c
index 944b9a24c07..46734683937 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -1,5 +1,5 @@
/* Search an insn for pseudo regs that must be in hard regs and are not.
- Copyright (C) 1987, 1988, 1989, 1992 Free Software Foundation, Inc.
+ Copyright (C) 1987, 1988, 1989, 1992, 1993 Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -4948,7 +4948,7 @@ find_equiv_reg (goal, insn, class, other, reload_reg_p, goalreg, mode)
enum machine_mode mode;
{
register rtx p = insn;
- rtx valtry, value, where;
+ rtx goaltry, valtry, value, where;
register rtx pat;
register int regno = -1;
int valueno;
@@ -5054,7 +5054,9 @@ find_equiv_reg (goal, insn, class, other, reload_reg_p, goalreg, mode)
&& GET_CODE (XEXP (tem, 0)) == CONST_DOUBLE
&& GET_MODE_CLASS (GET_MODE (XEXP (tem, 0))) == MODE_FLOAT
&& GET_CODE (goal) == CONST_INT
- && INTVAL (goal) == CONST_DOUBLE_LOW (XEXP (tem, 0))
+ && 0 != (goaltry = operand_subword (XEXP (tem, 0), 0, 0,
+ VOIDmode))
+ && rtx_equal_p (goal, goaltry)
&& (valtry = operand_subword (SET_DEST (pat), 0, 0,
VOIDmode))
&& (valueno = true_regnum (valtry)) >= 0)
@@ -5064,7 +5066,9 @@ find_equiv_reg (goal, insn, class, other, reload_reg_p, goalreg, mode)
&& GET_CODE (XEXP (tem, 0)) == CONST_DOUBLE
&& GET_MODE_CLASS (GET_MODE (XEXP (tem, 0))) == MODE_FLOAT
&& GET_CODE (goal) == CONST_INT
- && INTVAL (goal) == CONST_DOUBLE_HIGH (XEXP (tem, 0))
+ && 0 != (goaltry = operand_subword (XEXP (tem, 0), 1, 0,
+ VOIDmode))
+ && rtx_equal_p (goal, goaltry)
&& (valtry
= operand_subword (SET_DEST (pat), 1, 0, VOIDmode))
&& (valueno = true_regnum (valtry)) >= 0)))