From f55b1d9739d7adf97c3ecd695e4529888be138ef Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Thu, 6 May 1993 18:18:06 -0400 Subject: (find_equiv_reg): Don't look inside a CONST_DOUBLE; use operand_subword instead. From-SVN: r4373 --- gcc/reload.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'gcc') 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))) -- cgit v1.1