Related articles |
---|
[4 earlier articles] |
Re: how to generate code for (a,b):=(b,a) Robert.Harley@inria.fr (1997-05-08) |
Re: how to generate code for (a,b):=(b,a) dlmoore@ix.netcom.com (David L Moore) (1997-05-08) |
Re: how to generate code for (a,b):=(b,a) preston@cs.rice.edu (1997-05-08) |
Re: how to generate code for (a,b):=(b,a) cliffc@risc.sps.mot.com (Cliff Click) (1997-05-12) |
Re: how to generate code for (a,b):=(b,a) wilson@cs.utexas.edu (1997-05-12) |
Re: how to generate code for (a,b):=(b,a) tim@wfn-shop.Princeton.EDU (1997-05-13) |
Re: how to generate code for (a,b):=(b,a) cdg@nullstone.com (Christopher Glaeser) (1997-05-13) |
Re: how to generate code for (a,b):=(b,a) genew@vip.net (1997-05-13) |
Re: how to generate code for (a,b):=(b,a) bobduff@world.std.com (1997-05-13) |
Re: how to generate code for (a,b):=(b,a) will@ccs.neu.edu (William D Clinger) (1997-05-17) |
Re: how to generate code for (a,b):=(b,a) wilson@cs.utexas.edu (1997-05-17) |
Re: how to generate code for (a,b):=(b,a) boehm@mti.mti.sgi.com (Hans-Juergen Boehm) (1997-05-17) |
Re: how to generate code for (a,b):=(b,a) boehm@mti.mti.sgi.com (Hans-Juergen Boehm) (1997-05-17) |
[7 later articles] |
From: | Christopher Glaeser <cdg@nullstone.com> |
Newsgroups: | comp.compilers |
Date: | 13 May 1997 22:46:30 -0400 |
Organization: | Nullstone Corporation |
References: | 97-05-058 97-05-129 97-05-148 |
Keywords: | optimize, code |
Paul Wilson wrote:
> >When you don't have any free registers, it should be possible to achieve
> >the same result with a series of xors instead of moves. For example, two
> >registers can be exchanged with the sequence:
> > xor a,b
> > xor b,a
> > xor a,b
>
> This is very likely to confuse a conservative garbage collector if
> these are pointer variables. I'd hope that compiler writers wouldn't
> use such optimizations casually, especially if they're not clearly
> better than the alternatives.
Yes, if the xor's are expanded in the IL, it can confuse the optimizer,
but there are other ways to implement this so the intent of the
operation (i.e. swap the contents of a and b) is preserved and obvious.
For example, a new "swap" pseudo instruction could be added to the IL
which is expanded by the codegenerator or assembler. Of course, there
are still scheduling implications, but no extra registers are needed,
and the optimizer should be able to track the values through the swap
instruction.
Best regards,
Christopher Glaeser cdg@nullstone.com
Nullstone Corporation http://www.nullstone.com
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.