To: Richard Henderson cc: Joe Buck , jkinsley AT bticc DOT net, bug-glibc AT gnu DOT org, pgcc AT delorie DOT com, pcg AT goof DOT com, egcs AT egcs DOT cygnus DOT com, egcs-bugs AT egcs DOT cygnus DOT com Subject: Re: pgcc-1.1.1 glibc-2.1.1 strptime.c forbidden register In-reply-to: Your message of Fri, 09 Apr 1999 14:58:46 PDT. <19990409145846 DOT B28336 AT cygnus DOT com> Date: Fri, 09 Apr 1999 16:02:42 -0600 Message-ID: <29685.923695362@upchuck> From: Jeffrey A Law Reply-To: pgcc AT delorie DOT com In message <19990409145846 DOT B28336 AT cygnus DOT com>you write: > On Fri, Apr 09, 1999 at 03:34:18PM -0600, Jeffrey A Law wrote: > > For example consider an input operand that is an array element. If we us > e > > indexed addressing to access the element, then it needs two registers eve > n > > though (at the source level) is uses only one. For these cases it would > be > > nice if we reloaded the address as a whole so that the asm itself only ne > eded > > a single register for the asm itself. > > This is largely fixed in current cvs. Previously for something like > > a = foo[x]; > b = bar[y]; > c = baz[z]; > asm ("" : "=r"(out) : "r"(a), "r"(b), "r"(c)) > > we could wind up needing 6 registers, since combine would happily > merge the array references back in to the asm. This is now prevented > by forcing the asm arguments to more closely match their reload > constraints. Yup. The two problems in this area were both against egcs-1.1.x based compilers. The current tree does the right thing. jeff