diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1993-05-06 18:18:06 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1993-05-06 18:18:06 -0400 |
commit | f55b1d9739d7adf97c3ecd695e4529888be138ef (patch) | |
tree | da91edf84438c26184894ae82419f23027855cc7 /gcc | |
parent | 7313c84b673430d8e972800966afdec82cbd9e22 (diff) | |
download | gcc-f55b1d9739d7adf97c3ecd695e4529888be138ef.zip gcc-f55b1d9739d7adf97c3ecd695e4529888be138ef.tar.gz gcc-f55b1d9739d7adf97c3ecd695e4529888be138ef.tar.bz2 |
(find_equiv_reg): Don't look inside a CONST_DOUBLE; use
operand_subword instead.
From-SVN: r4373
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/reload.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/gcc/reload.c b/gcc/reload.c index 944b9a2..4673468 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))) |