RTL code

James E Wilson wilson@specifixinc.com
Wed Apr 13 00:31:00 GMT 2005


Rajkishore Barik wrote:
> Can someone tell me if there is a way to generate RTL code which does not
> include use and def of the same pseudo in the same insn?

That depends on how you are generating RTL, but it should be pretty 
obvious that you can use gen_reg_rtx to generate a temp reg for use as a 
destination for most operations.

Or maybe your question is how to get everyone else to generate RTL code 
this way?  No, there isn't an easy way to do this.

There are also some reasons why it is impossible to do it everywhere. 
RTL matches hardware instructions, and some targets have instructions 
that require that source and destination operands match.  There are also 
some rtl operations that implicitly use and set the same register, such 
as bitfield inserts.  Some targets have complex operations that may 
require rtl that explicitly sets and uses the same register in order to 
adequately describe.  Etc.  You can't fix all of these cases by 
splitting apart instructions, at least not without losing performance.

There is also the issue of extended asms, which may use and set the same 
register.

In general, gcc does already try to use temporary regs in many places 
when optimizing, because we often get better code that way.  This is 
probably only true in very early rtl optimization passes though.  In 
later ones, the temps will have already been optimized away.
-- 
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com



More information about the Gcc mailing list