This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: FW: [avr-libc-dev] Fwd: Testresults for [PATCH]: Rewrite AVR backend's rtx_costs (take 3)
- From: Björn Haase <bjoern dot m dot haase at web dot de>
- To: Andy Hutchinson <HutchinsonAndy at netscape dot net>
- Cc: schlie at comcast dot net,Marek Michalkiewicz <marekm at amelek dot gda dot pl>,Roger Sayle <roger at eyesopen dot com>,gcc-patches at gcc dot gnu dot org,avr-libc-dev at nongnu dot org
- Date: Wed, 9 Feb 2005 23:57:17 +0100
- Subject: Re: FW: [avr-libc-dev] Fwd: Testresults for [PATCH]: Rewrite AVR backend's rtx_costs (take 3)
- References: <BE2EE0A9.8F7C%schlie@comcast.net> <42099F61.3080309@netscape.net>
Am Mittwoch, 9. Februar 2005 06:28 schrieb Andy Hutchinson:
> My setup now doesn't give the reload failure on the testcase.
>
> I have not tested code!!
>
> As per last message, the block move scoops up the pointer registers. As
> this is a stack move, we also have frame pointer involved to calculate
> addresses. Net result, we run out of pointer registers when reload is
> not smart enough to juggle that much. Same as bug 18251.
>
> As to what causes the regression, I cannot be sure but it might be
> change in constant costs. gcc still seems to be saving them in
> registers. On the otherhand it could equally be that we got lucky when
> code got rearranged!
>
> The attached code replaces the patterns in avr.md and now only allows
> non-pointer registers "al" as a counter for *movmemqi_insn. As any
> register can be used, that restriction is not significant.
I can confirm that the regression with rogers patch is resolved when applying
your suggested changes. In contrast, the restriction of the allowed register
sets does not seem to affect the bug 18251.
Yours,
Björn