From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32352 invoked by alias); 13 Mar 2005 04:05:20 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 32308 invoked by alias); 13 Mar 2005 04:05:16 -0000 Date: Sun, 13 Mar 2005 04:05:00 -0000 Message-ID: <20050313040516.32307.qmail@sourceware.org> From: "andrewhutchinson at cox dot net" To: gcc-bugs@gcc.gnu.org In-Reply-To: <20041031125117.18251.ralf_corsepius@rtems.org> References: <20041031125117.18251.ralf_corsepius@rtems.org> Reply-To: gcc-bugzilla@gcc.gnu.org Subject: [Bug target/18251] unable to find a register to spill in class `POINTER_REGS' X-Bugzilla-Reason: CC X-SW-Source: 2005-03/txt/msg01569.txt.bz2 List-Id: ------- Additional Comments From andrewhutchinson at cox dot net 2005-03-13 04:05 ------- Subject: Re: unable to find a register to spill in class `POINTER_REGS' You answered your own question. GCC handles variable moves just like anything else. Dealing with range of possible values and size etc and construct appropriate RTL. GCC does not need this backend define or expand. It is quite happy working out moves by itself. The pattern is *only* defined when the target can do a better job - i.e. when we have a constant byte count - but not otherwise. I have found it's a really bad idea to second guess compiler optimisations. >- how about in the case of a variable count = 0 ? > (or since only constants are handled, it falls back to letting gcc figure it out?) > > > > -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18251