This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
g77.f-torture/compile/980424-0.f and bug in reload.c
- To: egcs at cygnus dot com
- Subject: g77.f-torture/compile/980424-0.f and bug in reload.c
- From: hjl at lucon dot org (H.J. Lu)
- Date: Wed, 27 May 1998 18:39:32 -0700 (PDT)
Hi,
I think g77.f-torture/compile/980424-0.f has something to do with
find_reloads in reload.c:
else if (code == SUBREG)
{
rtx reg = SUBREG_REG (recog_operand[i]);
rtx op
= find_reloads_toplev (recog_operand[i], i, address_type[i],
ind_levels,
set != 0
&& &SET_DEST (set) == recog_operand_loc[i]);
/* If we made a MEM to load (a part of) the stackslot of a pseudo
that didn't get a hard register, emit a USE with a REG_EQUAL
note in front so that we might inherit a previous, possibly
wider reload. */
if (GET_CODE (op) == MEM
&& GET_CODE (reg) == REG
&& (GET_MODE_SIZE (GET_MODE (reg))
>= GET_MODE_SIZE (GET_MODE (op))))
REG_NOTES (emit_insn_before (gen_rtx_USE (VOIDmode, reg), insn))
= gen_rtx_EXPR_LIST (REG_EQUAL,
reg_equiv_memory_loc[REGNO (reg)], NULL_RTX);
substed_operand[i] = recog_operand[i] = *recog_operand_loc[i] = op;
}
The problem is op may not satisfy constraints. In that case, the insn
wants a fp register and op is an interger constant.
--
H.J. Lu (hjl@gnu.org)