Mail Archives: pgcc/1999/04/09/18:12:43
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
- Raw text -