This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Reload bug
- To: Andreas Schwab <schwab at issan dot informatik dot uni-dortmund dot de>
- Subject: Re: Reload bug
- From: Jeffrey A Law <law at cygnus dot com>
- Date: Wed, 15 Jul 1998 09:38:24 -0600
- cc: "David S. Miller" <davem at dm dot cobaltmicro dot com>, egcs-patches at cygnus dot com
- Reply-To: law at cygnus dot com
In message <vyzemvnie5r.fsf@issan.informatik.uni-dortmund.de>you write:
> "David S. Miller" <davem@dm.cobaltmicro.com> writes:
>
> |> From: Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
> |> Date: 15 Jul 1998 11:20:27 +0200
> |>
> |> The function reg_overlap_mentioned_for_reload_p can only be called
> |> for certain rtx. A zero_extract is not one of them.
> |>
> |> Do you have a small testcase which can trigger this bug?
>
> I have a test case, but it is rather big. I'll try to construct a small
> one, now that i've understood the problem.
>
> |> It's not that I think your fix is incorrect, however I'd like to have
> |> a test case to get a better idea of what is going wrong.
>
> The problem was that there was an insn of the form
>
> (set (zero_extract ...) (const_int 0))
>
> and find_reg_equiv was called with goal == (const_int 0). true_regnum
> returns -1 for zero_extract, thus the value of
> reg_overlap_mentioned_for_reload_p doesn't matter anyway.
The real bug is in reg_overlap_mentioned_p and _for_reload_p. There's
no reason they can not be called with STRICT_LOW_PART, ZERO_EXTRACT,
etc etc.
jeff